在日常工作或学习中,我们经常需要对大量文件进行重命名。手动操作一个一个改名既费时又费力,这时候可以使用 Python 脚本来自动完成这项任务。

本文将介绍一个使用 Python 的简单脚本,可以帮助您批量重命名指定目录下的所有文件。

脚本分析

import os

def batch_rename_files(directory, prefix):
    """
    批量重命名指定目录下的文件名称。

    参数:
        directory (str): 目标目录路径。
        prefix (str): 新文件名的前缀。
    """

    # 检查目录是否存在
    if not os.path.isdir(directory):
        print("错误:指定的目录路径不存在。")
        return

    # 获取目录中的所有文件,并按照文件名进行排序
    files = sorted(os.listdir(directory))
    num_files = len(files)

    # 循环遍历文件
    for index, filename in enumerate(files):
        # 跳过 .DS_Store 文件
        if filename == ".DS_Store":
            continue

        # 构造新的文件名
        new_filename = f"{prefix}_{index}{os.path.splitext(filename)[1]}"

        # 构造旧文件路径和新文件路径
        old_filepath = os.path.join(directory, filename)
        new_filepath = os.path.join(directory, new_filename)

        # 检查新文件名是否已经存在
        if os.path.exists(new_filepath):
            print(f"警告:文件 {new_filename} 已经存在,将跳过重命名。")
            continue

        try:
            # 重命名文件
            os.rename(old_filepath, new_filepath)
            print(f"Renamed {filename} to {new_filename}")
        except Exception as e:
            print(f"Error renaming {filename}: {e}")

    # 检查是否有文件漏掉
    if num_files != len(os.listdir(directory)):
        print("警告:部分文件被漏掉或丢失。")

# 用户输入目录路径和前缀
directory = input("请输入目录路径(例如:/Users/xxx/Desktop/Folder):")
prefix = input("请输入文件名前缀:")

# 执行批量重命名
batch_rename_files(directory, prefix)

脚本详解:

  1. 导入 os 模块,用于操作文件和目录。
  2. 定义 batch_rename_files 函数,用于批量重命名文件。
  3. 检查目标目录是否存在,如果不存在则报错。
  4. 获取目录中的所有文件,并按照文件名进行排序。
  5. 循环遍历每个文件:
  • 跳过 .DS_Store 文件。
  • 构造新的文件名,格式为 前缀_索引_扩展名
  • 构造旧文件路径和新文件路径。
  • 检查新文件名是否已经存在,如果存在则跳过。
  • 尝试重命名文件,并捕获异常。
  1. 检查是否有文件被漏掉或丢失。
  2. 从用户输入中获取目录路径和文件名前缀。
  3. 调用 batch_rename_files 函数执行批量重命名。

使用方法

  1. 将上述代码保存为 .py 文件,例如 rename_files.py
  2. 打开命令行终端,并导航到保存脚本的目录。
  3. 使用以下命令执行脚本:
python rename_files.py
  1. 按照提示输入目录路径和文件名前缀,然后脚本将自动批量重命名该目录下的所有文件。

注意

  • 确保您拥有对目标目录的读写权限。
  • 脚本默认按照文件名对文件进行排序,如果您需要按照其他方式排序,可以修改 files = sorted(os.listdir(directory)) 这行代码。
  • 脚本会跳过 .DS_Store 文件,如果您需要重命名这些文件,可以修改 if filename == ".DS_Store": continue 这行代码。
  • 脚本会检查新文件名是否已经存在,如果存在则跳过。如果您希望覆盖已存在的同名文件,可以修改 if os.path.exists(new_filepath): continue 这行代码。

总结

这个 Python 脚本可以帮助您快速、轻松地批量重命名文件,节省您的时间和精力。您可以根据自己的需求修改脚本,使其更加灵活好用。