Python修改文件名的方法主要分为以下三类,涵盖基础操作、批量处理及高级筛选功能:
一、基础重命名操作
使用os.rename()
函数直接修改文件名,适用于单个文件操作。
import os
old_name = "old_file.txt"
new_name = "new_file.txt"
os.rename(old_name, new_name)
或使用pathlib
模块(Python 3.4+),代码更简洁易读:
from pathlib import Path
old_name = Path("old_file.txt")
new_name = Path("new_file.txt")
old_name.rename(new_name)
二、批量重命名工具
-
添加前缀/后缀
通过字符串拼接实现,例如为所有
.txt
文件添加前缀prefix_
:import os folder_path = 'path/to/folder' for filename in os.listdir(folder_path): if filename.endswith('.txt'): new_filename = 'prefix_' + filename os.rename(os.path.join(folder_path, filename), new_filename)
或添加后缀
_suffix
:new_filename = filename[:-4] + '_suffix.txt'
-
正则表达式批量修改
使用
re.sub()
匹配并替换文件名中的特定模式,例如删除大括号内容:import os import re def rename_files(dirPath, pattern): for file in os.listdir(dirPath): if os.path.isfile(os.path.join(dirPath, file)): newName = re.sub(pattern, "", file) os.rename(os.path.join(dirPath, file), os.path.join(dirPath, newName))
三、高级筛选与预览功能
-
按扩展名筛选
结合
os.path.splitext()
判断文件类型,例如仅修改.txt
文件:for filename in os.listdir(folder_path): if filename.endswith('.txt'): # 修改逻辑
-
预览修改结果
在实际重命名前输出新文件名列表供确认:
def batch_rename(folder_path, prefix="", suffix="", preview=True): files = os.listdir(folder_path) if suffix: files = [f for f in files if f.endswith(suffix)] if prefix: files = [f for f in files if not f.startswith(prefix)] if preview: for new_name in files: print(os.path.join(folder_path, new_name)) # 执行重命名
注意事项
-
重命名前需确保新文件名唯一,避免覆盖现有文件。
-
处理路径时建议使用
os.path.join()
避免路径拼接错误。 -
大量文件操作建议添加异常处理(如
try-except
)以应对权限问题。