HOOOS

告别手动:用Python脚本批量重命名文件,效率提升N倍!

0 3 效率狂魔 Python脚本批量重命名文件管理
Apple

你是否还在为成堆的文件重命名而烦恼?一张张照片,一段段视频,一个个文档,手动修改名字简直是噩梦!今天,我就来分享一个超级实用的Python脚本,让你彻底告别手动重命名的苦海,效率提升N倍!

需求分析

我们的目标是:

  1. 批量重命名:可以一次性处理一个文件夹下的所有文件。
  2. 自定义规则:可以根据自己的需求,灵活地添加序号、日期、前缀、后缀等等。
  3. 简单易用:即使不懂Python,也能轻松上手。

代码实现

import os
import datetime


def batch_rename(folder_path, rename_rule):
    """批量重命名文件夹中的文件。"""
    try:
        file_names = os.listdir(folder_path)
        file_names.sort()  # 排序,保证序号的正确性

        for index, old_name in enumerate(file_names):
            # 忽略文件夹
            if os.path.isdir(os.path.join(folder_path, old_name)):  
                continue

            new_name = rename_rule(index, old_name)
            old_path = os.path.join(folder_path, old_name)
            new_path = os.path.join(folder_path, new_name)

            os.rename(old_path, new_path)
            print(f'文件 "{old_name}" 重命名为 "{new_name}"')

        print("重命名完成!")

    except FileNotFoundError:
        print(f"错误:文件夹 "{folder_path}" 未找到!")
    except Exception as e:
        print(f"发生错误:{e}")


def add_sequential_number(index, old_name):
    """添加序号的重命名规则。"""
    return f"{index + 1}_{old_name}"


def add_date_prefix(index, old_name):
    """添加日期前缀的重命名规则。"""
    now = datetime.datetime.now()
    date_string = now.strftime("%Y%m%d")
    return f"{date_string}_{old_name}"


if __name__ == "__main__":
    folder_path = input("请输入文件夹路径:")

    print("请选择重命名规则:")
    print("1. 添加序号")
    print("2. 添加日期前缀")
    rule_choice = input("请输入规则编号:")

    if rule_choice == "1":
        rename_rule = add_sequential_number
    elif rule_choice == "2":
        rename_rule = add_date_prefix
    else:
        print("无效的规则编号,使用默认的添加序号规则")
        rename_rule = add_sequential_number

    batch_rename(folder_path, rename_rule)

代码解释

  • import os:导入os模块,用于处理文件和目录。
  • import datetime:导入datetime模块,用于获取日期和时间。
  • batch_rename(folder_path, rename_rule):核心函数,用于批量重命名文件。
    • folder_path:要重命名的文件夹路径。
    • rename_rule:一个函数,用于定义重命名规则,接受文件索引和旧文件名作为参数,返回新的文件名。
    • os.listdir(folder_path):获取文件夹下的所有文件和文件夹名。
    • os.path.join(folder_path, old_name):将文件夹路径和文件名拼接成完整的文件路径。
    • os.rename(old_path, new_path):重命名文件。
  • add_sequential_number(index, old_name):添加序号的重命名规则。
    • index:文件索引,从0开始。
    • old_name:旧文件名。
    • f"{index + 1}_{old_name}":使用f-string格式化字符串,将序号和旧文件名拼接成新的文件名。
  • add_date_prefix(index, old_name):添加日期前缀的重命名规则。
    • datetime.datetime.now():获取当前日期和时间。
    • now.strftime("%Y%m%d"):将日期格式化为YYYYMMDD的字符串。
  • if __name__ == "__main__":Python程序的入口点,只有当直接运行该脚本时,才会执行该代码块。
    • input("请输入文件夹路径:"):提示用户输入文件夹路径。
    • input("请选择重命名规则:"):提示用户选择重命名规则。

使用方法

  1. 保存代码:将代码保存为.py文件,例如rename.py
  2. 安装Python:如果你的电脑上还没有安装Python,请先安装Python 3.6或更高版本。(https://www.python.org/downloads/
  3. 运行脚本:在命令行或终端中,进入脚本所在的目录,然后运行python rename.py
  4. 输入文件夹路径:按照提示,输入你要重命名的文件夹路径。
  5. 选择重命名规则:按照提示,选择你要使用的重命名规则。
  6. 等待完成:脚本会自动重命名文件夹下的所有文件,并在完成后提示。

更多自定义规则

除了添加序号和日期前缀,你还可以根据自己的需求,自定义更多的重命名规则。例如:

  • 添加前缀/后缀

    def add_prefix_suffix(index, old_name):
        prefix = "new_"
        suffix = "_processed"
        return f"{prefix}{old_name.split('.')[0]}{suffix}.{old_name.split('.')[-1]}"
    
  • 替换文件名中的字符

    def replace_chars(index, old_name):
        new_name = old_name.replace(" ", "_").replace("-", "_")
        return new_name
    
  • 截取文件名的一部分

    def truncate_name(index, old_name):
        return old_name[:10]  # 截取前10个字符
    

只需要修改rename_rule函数,就可以实现各种各样的重命名规则。

注意事项

  • 备份文件:在运行脚本之前,建议先备份要重命名的文件,以防万一。
  • 测试脚本:在批量重命名大量文件之前,先用少量文件进行测试,确保脚本能够正常工作。
  • 谨慎操作:重命名文件是一个不可逆的操作,请务必谨慎操作。
  • 处理文件夹:目前的脚本只会处理文件,会忽略文件夹。如果需要处理文件夹,需要修改代码。

总结

通过这个Python脚本,你可以轻松地批量重命名文件,节省大量的时间和精力。快去试试吧,让你的文件管理工作更加高效!希望这个教程对你有所帮助!如有任何问题,欢迎留言交流!

点评评价

captcha
健康