【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函数即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉米子禾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值