【Python】文件批量重命名
需求:
经常有很多相似的文件需要重命名,如果一个一个来太麻烦了,正好会Python,所以用Python写了个脚本,把符合要求的文件的文件名修改为新的。
代码:
# coding:utf-8
# @Time : 2021/5/18 15:32
# @Author : minuy
# @File : rename.py
import os
import re
def get_suffix(file):
"""
获取文件后缀
:param file: 文件名
:return: 文件后缀
"""
return re.sub(r'.+\.', '', file)
def get_new_name(old_file_name):
"""
根据旧的文件名,生成新的文件名
:param old_file_name: 旧的文件名
:return: 如果返回False,不执行更改,否则返回新的文件名
"""
suffix = get_suffix(old_file_name)
new_file_name = old_file_name
if suffix == 'java':
new_file_name = old_file_name.replace(suffix, 'txt')
return new_file_name
def change_file_name(file_dir, is_show=True):
"""
遍历并重命名文件
:param is_show: 是否显示调试信息
:param file_dir: 根目录
:return: 成功个数 失败个数
"""
rename_count = 0
failed_count = 0
for root, dirs, files in os.walk(file_dir):
if is_show:
print(root) # 当前目录路径
print(dirs) # 当前路径下所有子目录
print(files) # 当前路径下所有非目录子文件
for file_name in files:
new_name = get_new_name(file_name)
if new_name:
old_name = os.path.join(root, file_name)
new_name = os.path.join(root, new_name)
if old_name != new_name:
if is_show:
print('文件名改变 -> ', old_name, new_name)
os.rename(old_name, new_name)
rename_count += 1
else:
failed_count += 1
return rename_count, failed_count
if __name__ == '__main__':
ret = change_file_name(r"D:\Minuy\Desktop\试卷\java")
print('修改文件名 -> 成功个数:', ret[0], '失败个数:', ret[1])
说明:
很简单,change_file_name
函数就是遍历整个目录,把文件名传入get_new_name
函数,get_new_name
函数负责生成新的文件名并返回,再由change_file_name
函数去修改。使用时只需要根据自己的需求重写get_new_name
函数即可。