云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

批量修改文件名的小脚本(文件批量重命名脚本)

jxf315 2025-04-11 00:02:50 教程文章 15 ℃

import os

# 获取用户输入文件夹路径

folder_path = input(r"请输入文件夹路径:" ).strip()

# 判断路径是否存在

if not os.path.exists(folder_path):

print("错误:输入的文件夹路径不存在!")

exit()

# 让用户输入文件名前缀(可选)

prefix = input("请输入文件名前缀(可留空):" ).strip()

# 获取所有目标文件,并进行排序

files = sorted([f for f in os.listdir(folder_path) if f.lower().endswith(('jpg', 'jpeg', 'png', 'txt'))])

# 按顺序重命名

for index, file in enumerate(files, start=1):

ext = file.split('.')[-1] # 获取扩展名

new_name = f"{prefix}{index}.{ext}" if prefix else f"{index}.{ext}" # 生成新文件名


old_path = os.path.join(folder_path, file)

new_path = os.path.join(folder_path, new_name)


# 处理文件名冲突

if os.path.exists(new_path):

print(f"警告:{new_name} 已存在,跳过重命名 {file}。")

continue # 避免覆盖,跳过该文件


os.rename(old_path, new_path)

print(f"重命名:{file} → {new_name}")

print("重命名完成!")


这个 Python 脚本用于批量重命名指定文件夹中的 .jpg、.jpeg、.png、.txt 文件,并按照一定规则进行排序和重命名。以下是脚本的详细解析


代码解析

1. 导入 os 模块

import os

os 模块提供与操作系统交互的功能,如文件路径处理、文件/文件夹操作等。


2. 获取用户输入的文件夹路径

folder_path = input(r"请输入文件夹路径:" ).strip()
  • input():提示用户输入文件夹路径。
  • r"":原始字符串(Raw String),避免 \ 造成转义问题,如 C:\Users\ 会被误认为 C:\Users\t。
  • .strip():去除首尾的空格,避免输入多余的空格导致路径错误。

3. 判断路径是否存在

if not os.path.exists(folder_path): print("错误:输入的文件夹路径不存在!") exit()
  • os.path.exists(folder_path):检查输入的路径是否存在。
  • 如果路径不存在,则打印错误信息并终止程序。

4. 获取用户输入的文件名前缀(可选)

prefix = input("请输入文件名前缀(可留空):" ).strip()
  • input() 让用户输入文件名前缀,用于自定义文件命名。
  • 如果用户不输入前缀,脚本会默认使用纯数字命名(如 1.jpg、2.png)。

5. 获取并排序所有符合条件的文件

files = sorted([f for f in os.listdir(folder_path) if f.lower().endswith(('jpg', 'jpeg', 'png', 'txt'))])
  • os.listdir(folder_path):获取文件夹中的所有文件名。
  • 筛选符合扩展名的文件(jpg, jpeg, png, txt):
  • python
  • CopyEdit
  • [f for f in os.listdir(folder_path) if f.lower().endswith(('jpg', 'jpeg', 'png', 'txt'))]
    • f.lower():将文件名转换为小写,以避免 JPG 和 jpg 这种大小写问题。
    • .endswith(('jpg', 'jpeg', 'png', 'txt')):检查文件扩展名是否符合要求。
  • sorted():对获取的文件名进行排序,确保重命名的顺序一致。

6. 遍历文件并按顺序重命名

for index, file in enumerate(files, start=1):
  • enumerate(files, start=1):
    • files 是经过筛选和排序的文件列表。
    • enumerate() 生成 (index, file),index 从 1 开始,避免 0.jpg 这种情况。

7. 获取文件扩展名

ext = file.split('.')[-1] # 获取扩展名
  • file.split('.'):以 . 进行分割文件名,如 "image.png" 变为 ["image", "png"]。
  • [-1]:获取最后一部分作为扩展名(适用于 .jpg、.jpeg、.txt 等)。

8. 生成新文件名

new_name = f"{prefix}{index}.{ext}" if prefix else f"{index}.{ext}"
  • 有前缀时,例如前缀为 "img_",则文件名变为:
  • python
  • CopyEdit
  • new_name = f"img_1.jpg"
  • 无前缀时,文件名变为:
  • python
  • CopyEdit
  • new_name = f"1.jpg"

9. 组合完整的文件路径

old_path = os.path.join(folder_path, file) new_path = os.path.join(folder_path, new_name)
  • os.path.join(folder_path, file) 生成文件的完整路径,例如:
  • python
  • CopyEdit
  • old_path = "C:/Users/Desktop/images/photo.jpg"
  • new_path 是重命名后的完整路径,如:
  • python
  • CopyEdit
  • new_path = "C:/Users/Desktop/images/1.jpg"

10. 处理文件名冲突

if os.path.exists(new_path): print(f"警告:{new_name} 已存在,跳过重命名 {file}。") continue # 避免覆盖,跳过该文件
  • 防止文件覆盖
    • 如果 new_path 已经存在,则跳过该文件,避免误覆盖已有文件。

11. 执行重命名

os.rename(old_path, new_path) print(f"重命名:{file} → {new_name}")
  • os.rename(old_path, new_path):执行文件重命名操作。
  • print():打印出已重命名的文件信息,方便用户查看。

12. 结束提示

print("重命名完成!")
  • 所有文件重命名完成后,打印提示信息,通知用户任务已完成。

Tags:

最近发表
标签列表