最近工作需要,要批量重命名服务器上的文件,将之前文件名中有空格的全部都替换为下划线。
开始准备使用shell脚本,发现python实现更简单。所以就写了这个脚本。
- import os
- import glob
- import re
- path="C:/test" # 批量化的初始位置
- fileHandle = open ( 'C:/test/test.txt', 'w' ) #log记录rename的信息
- def getthefile(path):
- for oldfn in glob.glob( path + os.sep + '*' ):
- if os.path.isdir( oldfn):# 查询是含有子目录
- getthefile( oldfn)
- else:
- if re.search(' ', oldfn):
- fn=renamefile(oldfn)
- if os.path.exists(fn):
- index=1
- while True:
- filelist=fn.split('.')
- fn="%s%s%s.%s"%(filelist[0],"_",index,filelist[1])
- if os.path.exists(fn):
- index=index+1
- continue
- break
- fileHandle.write ("%s ===> %s\n"%(oldfn,fn))
- fileHandle.flush()
- os.rename(oldfn,fn);
- else:
- fileHandle.write ("%s Nospace!!\n"%(oldfn))
- fileHandle.flush()
- continue
- def renamefile(filename):
- return filename.replace(' ','_')
- if __name__ == '__main__':
- getthefile(path)