【Python快速入门和实践014】Python常用脚本-批量重命名指定文件夹下文件名字

一、功能讲解

        这段代码是一个用于批量重命名文件的Python脚本。它的主要功能是在文件名前添加一定数量的前导零,使得所有文件名的长度保持一致。这对于管理大量文件,特别是当文件名需要按照特定顺序排列时非常有用。

  1. 导入必要的模块

    • os: 用于操作系统相关的功能,如读取目录等。
    • shutil: 提供高级操作,这里用于移动(重命名)文件。
  2. rename_images 函数

    • 参数
      • directory: 图片文件所在的目录。
      • prefix (默认为 "img"): 文件名的前缀。
      • total_length (默认为 5): 0的个数。
  3. 功能

    • 获取目录中的所有文件

      • 使用 os.listdir() 获取指定目录下的所有文件名。
    • 遍历文件

      • 对于每个文件,检查其是否为文件类型。
      • 获取文件的扩展名。
      • 如果文件是图片(这里指定了几种常见的图片扩展名),则执行重命名步骤。
    • 构建新的文件名

      • 使用 str().zfill() 方法来添加前导零,确保编号部分达到指定的长度。
      • 新文件名格式为 prefix_{编号}{扩展名}
      • 编号的位数取决于 total_length 参数,减去前缀长度和扩展名长度。
    • 重命名文件

      • 使用 shutil.move() 移动文件到同一目录下,实际上是重命名操作。
      • 打印出旧文件名和新文件名。
  4. 主程序 (if __name__ == "__main__":):

    • 设置要重命名的图片所在的目录。
    • 设置文件名的总长度。
    • 调用 rename_images 函数。

二、代码

import os
import shutil


def rename_images(directory, prefix="img", total_length=5):
    # 确保目录存在
    if not os.path.exists(directory):
        print(f"Directory '{directory}' does not exist.")
        return

    # 获取目录中的所有文件
    files = os.listdir(directory)

    # 记录已重命名的文件数量
    counter = 1

    for filename in files:
        # 检查是否为文件
        if os.path.isfile(os.path.join(directory, filename)):
            # 获取文件扩展名
            _, ext = os.path.splitext(filename)
            # print(_)
            print(ext)

            # 检查是否为图片文件(可以根据需要添加更多扩展名)
            if ext.lower() in ('.png', '.jpg', '.jpeg', '.gif', '.bmp'):
                # 构建新的文件名
                # 使用format方法来添加前导零
                new_filename = f"{prefix}_{str(counter).zfill(total_length+1)}{ext}"

                # 获取原始文件的完整路径
                old_filepath = os.path.join(directory, filename)

                # 获取新文件的完整路径
                new_filepath = os.path.join(directory, new_filename)

                # 重命名文件
                shutil.move(old_filepath, new_filepath)

                print(f"Renamed '{filename}' to '{new_filename}'")
                counter += 1
    print(f"一共成功命名了{counter-1}个文件。")

if __name__ == "__main__":
    # 指定图片所在的目录
    directory = "imgs"

    # 前导零长度
    total_length = 4

    # 定义自己的前缀
    prefix = '定义前缀'

    # 调用函数
    rename_images(directory, total_length=total_length, prefix=prefix)

执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值