rename_files
import os
def renameFiles():
"""
批量重命名文件:
忽略文件夹,且不会出现文件覆盖的问题
"""
input_path = input("请输入文件夹完整路径(如/Users/macos/Photo):")
output_name = input("请输入文件开头名(如pic/image,可不填写):")
# 输出文件名 如image00
startNumber = input("请输入迭代开始数(如0):")
output_suffix = input("请输入后缀名(如txt、jpg, 不需要打.):")
# 重命名后的文件后缀格式
file_lists = os.listdir(input_path)
changeList = [] # 记录哪些文件被修改了
newNameList = [] # 预期生成的新文件名列表
length = 0
for alist in file_lists:
if 'mhd' in alist:
# print(alist)
# print(os.path.join(input_path,alist))
#oldName
if os.path.isdir(os.path.join(input_path,alist)) or alist == '.DS_Store':
# join合并路径名,会帮你自动考虑“/”
# alist为file 不是dir
continue
length += 1
for i in range(length):
tmp = output_name + str(i + int(startNumber)) + "." + output_suffix
newNameList.append(tmp)
# print(newNameList)
count, num = 0, 0
# 核心代码
for filename in file_lists:
if 'mhd' in filename:
# 如果是子文件夹,则不执行
if os.path.isdir(os.path.join(input_path, filename)) or filename == '.DS_Store':
continue
oldName = os.path.join(input_path, filename)
# print(oldName)
# 如果filename已经在新文件名列表中,则不需要重命名
if filename in newNameList:
continue
# 找到合适的newName,防止覆盖原有的同名文件
while True:
tmp = output_name + str(count + int(startNumber)) + "." +output_suffix
newName = os.path.join(input_path, tmp)
if tmp in file_lists:
count += 1
else:
break
changeList.append("文件" + filename + "被修改为" + tmp)
os.rename(oldName, newName)
count += 1
num += 1
print("任务完成,共修改了" + str(num) + "个文件\n")
renameFiles()