Python函数实现批量重命名文件
发布时间:2023-06-06 07:32:39
在日常工作和生活中,我们常常需要对大量的文件进行批量重命名操作,这时候如果一个一个手动改名岂不是太麻烦?因此,编写一个Python脚本来实现批量重命名文件是非常实用并且能提高效率的。
这里通过Python的os库和re库来实现文件批量重命名。
首先,我们需要导入os和re库:
import os import re
接下来,我们定义一个函数batch_rename,该函数可以接收三个参数,分别是要重命名的文件夹路径、需要删除的字符串和要替换成的字符串。
def batch_rename(folder_path, old_str, new_str):
在该函数中,我们需要定义一个列表用来存储文件夹中的所有文件名:
files = os.listdir(folder_path)
然后,我们需要遍历该列表,获取每个文件的旧名和新名。文件的旧名与新名的关系为:如果文件名中包含旧字符串则将其替换成新字符串,否则文件名不变。
for file in files:
# 获取文件名的绝对路径
src_path = os.path.join(folder_path, file)
# 判断是否为文件
if os.path.isfile(src_path):
# 获取文件名和后缀名
(filepath, tempfilename) = os.path.split(src_path)
(shotname, extension) = os.path.splitext(tempfilename)
# 替换文件名中的字符串
new_shotname = re.sub(old_str, new_str, shotname)
new_filename = new_shotname + extension
# 构造文件的新路径
dst_path = os.path.join(filepath, new_filename)
最后,我们需要使用os库中的rename方法将旧文件名重命名为新文件名:
os.rename(src_path, dst_path)
将以上代码整合到一起即可实现文件批量重命名。
完整代码如下:
import os
import re
def batch_rename(folder_path, old_str, new_str):
files = os.listdir(folder_path)
for file in files:
# 获取文件名的绝对路径
src_path = os.path.join(folder_path, file)
# 判断是否为文件
if os.path.isfile(src_path):
# 获取文件名和后缀名
(filepath, tempfilename) = os.path.split(src_path)
(shotname, extension) = os.path.splitext(tempfilename)
# 替换文件名中的字符串
new_shotname = re.sub(old_str, new_str, shotname)
new_filename = new_shotname + extension
# 构造文件的新路径
dst_path = os.path.join(filepath, new_filename)
# 重命名文件
os.rename(src_path, dst_path)
if __name__ == '__main__':
folder_path = 'D:/test_rename'
old_str = 'old'
new_str = 'new'
batch_rename(folder_path, old_str, new_str)
以上代码将D:/test_rename文件夹中的所有文件名中包含字符串'old'的部分替换成字符串'new'。在实际使用中,通过修改folder_path、old_str和new_str的值即可实现对不同文件夹、不同文件名的批量重命名操作。
总之,Python函数实现批量重命名文件对于日常工作和学习会非常实用,可以提高工作效率。
