Python中实现批量重命名文件的方法
1. 前言
在日常的编程工作中,经常会遇到需要对大量文件进行重命名的情况。手动一个个修改文件名是非常繁琐的操作,所以我们需要使用Python来实现批量重命名文件的功能。本文将介绍几种不同的方法来完成这个任务。
2. 方法一:使用os模块的rename函数
Python的os模块中提供了一个rename函数,可以用来对文件进行重命名操作。该函数的使用方法如下:
import os
os.rename(原文件名, 新文件名)
下面是一个示例代码,将当前文件夹下的所有txt文件进行重命名,添加前缀”new_”:
import os
file_path = "./" # 当前文件夹路径
prefix = "new_" # 新文件名的前缀
for file_name in os.listdir(file_path):
if file_name.endswith(".txt"): # 判断文件名是否以".txt"结尾
new_file_name = prefix + file_name
os.rename(os.path.join(file_path, file_name), os.path.join(file_path, new_file_name))
print(f"将文件 {file_name} 重命名为 {new_file_name}")
print("文件重命名完成。")
运行结果如下:
将文件 file1.txt 重命名为 new_file1.txt
将文件 file2.txt 重命名为 new_file2.txt
...
文件重命名完成。
3. 方法二:使用shutil模块的move函数
除了使用os模块的rename函数外,还可以使用shutil模块的move函数来实现文件的重命名。该函数的使用方法如下:
import shutil
shutil.move(原文件名, 新文件名)
下面是一个示例代码,将当前文件夹下的所有jpg文件进行重命名,将文件名中的数字替换为”new”:
import os
import shutil
import re
file_path = "./" # 当前文件夹路径
pattern = r"\d+" # 用于匹配数字的正则表达式
for file_name in os.listdir(file_path):
if file_name.endswith(".jpg"): # 判断文件名是否以".jpg"结尾
new_file_name = re.sub(pattern, "new", file_name) # 将数字替换为"new"
shutil.move(os.path.join(file_path, file_name), os.path.join(file_path, new_file_name))
print(f"将文件 {file_name} 重命名为 {new_file_name}")
print("文件重命名完成。")
运行结果如下:
将文件 file1.jpg 重命名为 new.jpg
将文件 file2.jpg 重命名为 new.jpg
...
文件重命名完成。
4. 方法三:使用glob模块的glob函数
除了使用os模块和shutil模块外,我们还可以使用glob模块来批量匹配文件。glob模块中的glob函数可以返回一个符合指定规则的文件路径列表。下面是一个示例代码,将当前文件夹下的所有文件名中包含”old”的文件进行重命名,将”old”替换为”new”:
import os
import glob
file_path = "./" # 当前文件夹路径
for file_name in glob.glob(os.path.join(file_path, "*old*")):
new_file_name = file_name.replace("old", "new")
os.rename(file_name, new_file_name)
print(f"将文件 {file_name} 重命名为 {new_file_name}")
print("文件重命名完成。")
运行结果如下:
将文件 old_file1.txt 重命名为 new_file1.txt
将文件 old_file2.txt 重命名为 new_file2.txt
...
文件重命名完成。
5. 方法四:使用os模块的walk函数
最后,我们还可以使用os模块的walk函数来遍历文件夹下的所有文件,并进行重命名操作。下面是一个示例代码,将文件夹及其子文件夹下的所有doc文件进行重命名,将文件名中的空格替换为下划线:
import os
folder_path = "./folder/" # 文件夹路径
for folder_name, _, file_names in os.walk(folder_path):
for file_name in file_names:
if file_name.endswith(".doc"): # 判断文件名是否以".doc"结尾
new_file_name = file_name.replace(" ", "_") # 将空格替换为下划线
os.rename(os.path.join(folder_name, file_name), os.path.join(folder_name, new_file_name))
print(f"将文件 {file_name} 重命名为 {new_file_name}")
print("文件重命名完成。")
运行结果如下:
将文件 file 1.doc 重命名为 file_1.doc
将文件 file 2.doc 重命名为 file_2.doc
...
文件重命名完成。
6. 总结
本文介绍了几种Python实现批量重命名文件的方法。通过使用os模块、shutil模块、glob模块和walk函数,我们可以灵活地对文件进行重命名操作。无论是添加前缀、替换字符串、还是通过正则表达式进行匹配,Python提供了多种方法满足不同的需求。