日常工作中,经常需要批量重命名文件。手动改太慢,用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("完成!")

```

注意事项

  1. **备份文件**:批量操作前先备份,避免误操作
  2. **检查路径**:确保路径正确,Windows路径用 `r""` 或双斜杠 `\\`
  3. **文件占用**:确保文件没有被其他程序打开
  4. **测试运行**:先打印新文件名,确认无误后再执行重命名

总结

Python批量重命名文件的核心:

  • `os.rename()` 或 `pathlib.Path.rename()`
  • `os.listdir()` 或 `pathlib.Path.glob()`
  • 正则表达式处理复杂命名

掌握这些,再也不用手动改文件名了。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐