Python自动化:一键批量重命名文件
## 问题场景

工作中经常遇到需要批量重命名文件的情况:
- 下载了一堆图片,名字乱七八糟
- 需要给文件加统一前缀
- 想按序号重新命名
手动改?太慢了!
用Python,几秒钟搞定。
---
## 代码实现
```python
import os
def batch_rename(folder_path, prefix="", start_num=1):
"""
批量重命名文件
Args:
folder_path: 文件夹路径
prefix: 文件名前缀
start_num: 起始编号
"""
# 获取文件夹下所有文件
files = os.listdir(folder_path)
for i, filename in enumerate(files):
# 获取文件扩展名
name, ext = os.path.splitext(filename)
# 新文件名
new_name = f"{prefix}{start_num + i:03d}{ext}"
# 重命名
old_path = os.path.join(folder_path, filename)
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
print(f"重命名: {filename} -> {new_name}")
# 使用示例
batch_rename("D:/images", prefix="photo_", start_num=1)
```
---
## 功能说明
这个脚本可以:
1. 遍历指定文件夹下所有文件
2. 按序号重新命名
3. 添加统一前缀
4. 自动补零(如001、002...)
---
## 进阶用法
### 1. 只处理特定类型文件
```python
def batch_rename_by_type(folder_path, file_type=".jpg", prefix=""):
"""只重命名指定类型的文件"""
files = os.listdir(folder_path)
count = 1
for filename in files:
if filename.endswith(file_type):
name, ext = os.path.splitext(filename)
new_name = f"{prefix}{count:03d}{ext}"
old_path = os.path.join(folder_path, filename)
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
count += 1
```
### 2. 按修改时间排序
```python
import os
from datetime import datetime
def rename_by_time(folder_path):
"""按修改时间排序后重命名"""
files = os.listdir(folder_path)
# 获取文件修改时间并排序
file_times = []
for f in files:
path = os.path.join(folder_path, f)
mtime = os.path.getmtime(path)
file_times.append((f, mtime))
file_times.sort(key=lambda x: x[1])
# 重命名
for i, (filename, _) in enumerate(file_times, 1):
name, ext = os.path.splitext(filename)
new_name = f"{i:03d}{ext}"
old_path = os.path.join(folder_path, filename)
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
```
---
## 注意事项
1. **先备份**:重命名前先备份文件,避免误操作
2. **测试脚本**:先用少量文件测试
3. **路径问题**:Windows路径用双斜杠或反斜杠
4. **权限问题**:确保有读写权限
---
## 总结
Python批量重命名文件,简单高效。
10行代码,解决重复劳动。
这就是自动化的魅力。
---
#Python #自动化 #办公效率 #批量处理
更多推荐



所有评论(0)