最近工作需要,要批量重命名服务器上的文件,将之前文件名中有空格的全部都替换为下划线。
开始准备使用shell脚本,发现python实现更简单。所以就写了这个脚本。

 

  1. import os 
  2. import glob 
  3. import re 
  4. path="C:/test" # 批量化的初始位置 
  5. fileHandle = open ( 'C:/test/test.txt''w' ) #log记录rename的信息 
  6.  
  7. def getthefile(path): 
  8.     for oldfn in glob.glob( path + os.sep + '*' ):  
  9.         if os.path.isdir( oldfn):# 查询是含有子目录 
  10.             getthefile( oldfn)  
  11.         else
  12.             if re.search(' ', oldfn): 
  13.                 fn=renamefile(oldfn) 
  14.                 if os.path.exists(fn): 
  15.                     index=1 
  16.                     while True
  17.                         filelist=fn.split('.'
  18.                         fn="%s%s%s.%s"%(filelist[0],"_",index,filelist[1]) 
  19.                         if os.path.exists(fn): 
  20.                             index=index+1 
  21.                             continue 
  22.                         break 
  23.                 fileHandle.write ("%s ===> %s\n"%(oldfn,fn)) 
  24.                 fileHandle.flush()   
  25.                 os.rename(oldfn,fn); 
  26.             else
  27.                 fileHandle.write ("%s Nospace!!\n"%(oldfn)) 
  28.                 fileHandle.flush()  
  29.                 continue 
  30. def renamefile(filename): 
  31.     return filename.replace(' ','_'
  32. if __name__ == '__main__':   
  33.     getthefile(path) 
  34.      
  35.  
  36.      
  37.  
  38.