## 问题场景

工作中经常遇到需要批量重命名文件的情况:

- 下载了一堆图片,名字乱七八糟

- 需要给文件加统一前缀

- 想按序号重新命名

手动改?太慢了!

用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 #自动化 #办公效率 #批量处理

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐