Python自动化:批量重命名文件,一行代码搞定
日常工作中,经常需要批量重命名文件。手动改太慢,用Python一行代码就能搞定。
场景
假设有一个文件夹,里面有100个图片文件,命名格式是 `IMG_0001.jpg`、`IMG_0002.jpg`...
现在需要改成 `20260410_0001.jpg`、`20260410_0002.jpg`...
方案
方法一:os模块
```python
import os
设置文件夹路径
folder = r"C:\Users\Administrator\Desktop\images"
获取所有文件
files = os.listdir(folder)
遍历并重命名
for i, filename in enumerate(files, 1):
old_name = os.path.join(folder, filename)
new_name = os.path.join(folder, f"20260410_{i:04d}.jpg")
os.rename(old_name, new_name)
print(f"重命名: {filename} -> 20260410_{i:04d}.jpg")
print("完成!")
```
方法二:pathlib模块(推荐)
```python
from pathlib import Path
设置文件夹路径
folder = Path(r"C:\Users\Administrator\Desktop\images")
遍历并重命名
for i, file in enumerate(folder.glob("*.jpg"), 1):
new_name = folder / f"20260410_{i:04d}.jpg"
file.rename(new_name)
print(f"重命名: {file.name} -> {new_name.name}")
print("完成!")
```
方法三:一行代码版本
```python
from pathlib import Path; [f.rename(Path(r"C:\Users\Administrator\Desktop\images") / f"20260410_{i:04d}.jpg") for i, f in enumerate(Path(r"C:\Users\Administrator\Desktop\images").glob("*.jpg"), 1)]
```
进阶:正则表达式替换
如果需要保留原文件名的一部分,可以用正则表达式:
```python
import os
import re
folder = r"C:\Users\Administrator\Desktop\images"
files = os.listdir(folder)
for filename in files:
匹配 IMG_0001.jpg 格式
match = re.match(r"IMG_(\d+)", filename)
if match:
number = match.group(1)
new_name = f"20260410_{number}.jpg"
os.rename(os.path.join(folder, filename), os.path.join(folder, new_name))
print(f"重命名: {filename} -> {new_name}")
print("完成!")
```
进阶:批量修改扩展名
把所有 `.jpeg` 改成 `.jpg`:
```python
from pathlib import Path
folder = Path(r"C:\Users\Administrator\Desktop\images")
for file in folder.glob("*.jpeg"):
new_name = file.with_suffix(".jpg")
file.rename(new_name)
print(f"重命名: {file.name} -> {new_name.name}")
print("完成!")
```
进阶:批量添加前缀
给所有文件添加日期前缀:
```python
import os
from datetime import datetime
folder = r"C:\Users\Administrator\Desktop\images"
files = os.listdir(folder)
date_prefix = datetime.now().strftime("%Y%m%d")
for filename in files:
if not filename.startswith(date_prefix):
new_name = f"{date_prefix}_{filename}"
os.rename(os.path.join(folder, filename), os.path.join(folder, new_name))
print(f"重命名: {filename} -> {new_name}")
print("完成!")
```
注意事项
- **备份文件**:批量操作前先备份,避免误操作
- **检查路径**:确保路径正确,Windows路径用 `r""` 或双斜杠 `\\`
- **文件占用**:确保文件没有被其他程序打开
- **测试运行**:先打印新文件名,确认无误后再执行重命名
总结
Python批量重命名文件的核心:
- `os.rename()` 或 `pathlib.Path.rename()`
- `os.listdir()` 或 `pathlib.Path.glob()`
- 正则表达式处理复杂命名
掌握这些,再也不用手动改文件名了。
更多推荐



所有评论(0)