场景:
公司的同事在备份自己的素材文件到NAS时提示上传文件名称不可为特殊字符,通过判断文件的命名规则,发现违规的原因是命名文件名时使用了 8.16 这样的日期,存在命名规范外的字符 . (点),因为文件较多,且大,所以写了一个这样的Python程序用于全局替换
需要注意的是调用方法path路径参数有需要到 \ 反斜杠表示路径分隔时需要再写一个反斜杠用于转义,正常路径为:D:\test,转义后为change_file_name(path=“D:\\test”)
def change_file_name(path):
original_name = '.' # 匹配的字符串
replace_name = '_' # 替换的字符串
files_all = os.listdir(path) # 得到文件夹下的所有文件名称
for file in files_all : # 遍历文件夹
if os.path.isdir(path + '\\' + file) :
# 递归判断是否是文件夹
change_file_name(path + '\\' + file)
else :
files2 = os.listdir(path + '\\')
for file1 in files2 :
if original_name in file1 :
old_dir = os.path.join(path, file1) # 原来的文件路径
if os.path.isdir(old_dir) : # 如果是文件夹就跳过
new_name = str(path + '\\' + file1.replace(original_name, replace_name))
old_name = str(path + '\\' + str(file1))
os.rename(old_name, new_name)
filename = os.path.splitext(file)[0] # 文件名
filetype = os.path.splitext(file)[1] # 文件扩展名
new_name = str(path + '\\' + filename.replace(original_name, replace_name) + str(filetype))
old_name = str(path + '\\' + str(filename) + str(filetype))
os.rename(old_name, new_name)
print(new_name)