最近工作需要,要批量重命名服务器上的文件,将之前文件名中有空格的全部都替换为下划线。
开始准备使用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('.') #为了防止有多个文件重命名之后,文件名一样。所以添加index区分
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) #主函数