最近工作有个需求:
- 批量修改指定目录下的所有文件名的后缀名
- 批量修改指定目录下的所有文件名的开头或结尾
- 批量修改指定目录下的所有文件名,根据指定规则进行替换
代码示例:
1. 批量修改文件后缀名
import os
def rename_files(folder_path, new_suffix):
"""批量修改指定目录下的所有文件名的后缀名
Args:
folder_path: 要修改的文件目录
new_suffix: 新的文件后缀名
Returns:
None
"""
for filename in os.listdir(folder_path):
# 获取文件路径和扩展名
filepath, ext = os.path.splitext(filename)
# 判断文件是否存在
if os.path.isfile(os.path.join(folder_path, filename)):
# 修改文件名
new_filename = filepath + new_suffix
os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))
# 使用示例
folder_path = "/path/to/folder"
new_suffix = ".txt"
rename_files(folder_path, new_suffix)
2. 批量修改文件名开头或结尾
import os
def rename_files(folder_path, prefix, suffix):
"""批量修改指定目录下的所有文件名的开头或结尾
Args:
folder_path: 要修改的文件目录
prefix: 新的文件名前缀
suffix: 新的文件名后缀
Returns:
None
"""
for filename in os.listdir(folder_path):
# 获取文件路径和扩展名
filepath, ext = os.path.splitext(filename)
# 判断文件是否存在
if os.path.isfile(os.path.join(folder_path, filename)):
# 修改文件名
new_filename = prefix + filepath + suffix + ext
os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))
# 使用示例
folder_path = "/path/to/folder"
prefix = "new_"
suffix = "_new"
rename_files(folder_path, prefix, suffix)
3. 批量修改文件名,根据指定规则进行替换
import os
def rename_files(folder_path, replace_dict):
"""批量修改指定目录下的所有文件名,根据指定规则进行替换
Args:
folder_path: 要修改的文件目录
replace_dict: 替换规则字典,key为要替换的字符串,value为替换后的字符串
Returns:
None
"""
for filename in os.listdir(folder_path):
# 获取文件路径和扩展名
filepath, ext = os.path.splitext(filename)
# 判断文件是否存在
if os.path.isfile(os.path.join(folder_path, filename)):
# 修改文件名
new_filename = filepath
for key, value in replace_dict.items():
new_filename = new_filename.replace(key, value)
new_filename = new_filename + ext
os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))
# 使用示例
folder_path = "/path/to/folder"
replace_dict = {
"old": "new",
"_": "-",
}
rename_files(folder_path, replace_dict)
以上代码仅供参考,请根据实际需求进行修改。
注意事项:
- 批量修改文件名之前,请务必备份文件。
- 批量修改文件名时,请注意区分大小写。
希望以上内容对您有所帮助。