欢迎访问宙启技术站
智能推送

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函数实现批量重命名文件对于日常工作和学习会非常实用,可以提高工作效率。