【Python】文件批量重命名

需求:

经常有很多相似的文件需要重命名,如果一个一个来太麻烦了,正好会Python,所以用Python写了个脚本,把符合要求的文件的文件名修改为新的。

代码:

# coding:utf-8
# @Time : 2021/5/18 15:32 
# @Author : minuy
# @File : rename.py


import os
import re


def get_suffix(file):
    """
    获取文件后缀
    :param file: 文件名
    :return: 文件后缀
    """
    return re.sub(r'.+\.', '', file)


def get_new_name(old_file_name):
    """
    根据旧的文件名,生成新的文件名
    :param old_file_name: 旧的文件名
    :return: 如果返回False,不执行更改,否则返回新的文件名
    """
    suffix = get_suffix(old_file_name)
    new_file_name = old_file_name
    if suffix == 'java':
        new_file_name = old_file_name.replace(suffix, 'txt')
    return new_file_name


def change_file_name(file_dir, is_show=True):
    """
    遍历并重命名文件
    :param is_show: 是否显示调试信息
    :param file_dir: 根目录
    :return: 成功个数 失败个数
    """
    rename_count = 0
    failed_count = 0
    for root, dirs, files in os.walk(file_dir):
        if is_show:
            print(root)  # 当前目录路径
            print(dirs)  # 当前路径下所有子目录
            print(files)  # 当前路径下所有非目录子文件
        for file_name in files:
            new_name = get_new_name(file_name)
            if new_name:
                old_name = os.path.join(root, file_name)
                new_name = os.path.join(root, new_name)
                if old_name != new_name:
                    if is_show:
                        print('文件名改变 -> ', old_name, new_name)
                    os.rename(old_name, new_name)
                    rename_count += 1
            else:
                failed_count += 1
    return rename_count, failed_count


if __name__ == '__main__':
    ret = change_file_name(r"D:\Minuy\Desktop\试卷\java")
    print('修改文件名 -> 成功个数:', ret[0], '失败个数:', ret[1])

说明:

很简单,change_file_name函数就是遍历整个目录,把文件名传入get_new_name函数,get_new_name函数负责生成新的文件名并返回,再由change_file_name函数去修改。使用时只需要根据自己的需求重写get_new_name函数即可。

posted @ 2022-01-23 12:02  清风来叙  阅读(738)  评论(0编辑  收藏  举报