网站首页 > 教程文章 正文
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("重命名完成!")
- 所有文件重命名完成后,打印提示信息,通知用户任务已完成。
猜你喜欢
- 2025-04-11 手把手教你开发智能备份神器,小白也能30分钟搞定!
- 2025-04-11 画像笔记23- 作业流程调度(2)(作业流程图怎么画)
- 2025-04-11 Python接口自动化之常见用例读取方法介绍
- 2025-04-11 AI办公自动化:批量合并多个Excel表格的数据并汇总
- 2025-04-11 pc端微信用户图片DAT格式解码为图片
- 2025-04-11 Python自动化脚本应用与示例(pythonui自动化脚本)
- 2025-04-11 21-02-Python-文件操作下(python文件操作方法)
- 2025-04-11 Python定时任务,三步实现自动化(python定时任务,三步实现自动化效果)
- 2025-04-11 自动下载邮箱里未阅读的发票,并用邮件标题里指定的几个字命名
- 2025-04-11 照片整理很繁琐?3个python脚本帮你快速整理照片
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)