文件批量重命名是日常工作中常见的需求。今天我们将学习如何用 Python 实现文件的批量重命名,从而提高文件管理效率。
1. 准备工作:os 和 pathlib 模块
Python 的 os 和 pathlib 模块提供了强大的文件操作功能。我们将用它们来完成重命名操作。
2. 批量重命名文件
示例代码 1:按序号重命名
以下代码会将一个文件夹中的所有文件按序号重命名。
import os
def rename_files(folder_path):
# 获取文件夹中的所有文件
files = os.listdir(folder_path)
for index, file_name in enumerate(files):
# 构造旧文件路径和新文件路径
old_path = os.path.join(folder_path, file_name)
new_name = f"file_{index + 1}{os.path.splitext(file_name)[1]}"
new_path = os.path.join(folder_path, new_name)
# 重命名文件
os.rename(old_path, new_path)
print(f"Renamed: {old_path} -> {new_path}")
# 测试
folder = "./test_folder"
rename_files(folder)
示例代码 2:按特定前缀重命名
以下代码会在文件名前添加统一的前缀。
import os
def add_prefix(folder_path, prefix):
files = os.listdir(folder_path)
for file_name in files:
old_path = os.path.join(folder_path, file_name)
new_path = os.path.join(folder_path, f"{prefix}_{file_name}")
os.rename(old_path, new_path)
print(f"Renamed: {old_path} -> {new_path}")
# 测试
folder = "./test_folder"
prefix = "Project"
add_prefix(folder, prefix)
3. 按规则重命名文件
我们还可以基于特定的规则来重命名文件,例如日期、扩展名、内容关键词等。
示例代码 3:更改文件扩展名
以下代码会将文件夹中的所有 .txt 文件改为 .md。
from pathlib import Path
def change_extension(folder_path, old_ext, new_ext):
folder = Path(folder_path)
for file in folder.iterdir():
if file.suffix == old_ext:
new_file = file.with_suffix(new_ext)
file.rename(new_file)
print(f"Renamed: {file} -> {new_file}")
# 测试
folder = "./test_folder"
change_extension(folder, ".txt", ".md")
4. 实践练习
- 在一个文件夹中,批量重命名所有图片文件,添加日期作为前缀。
- 将所有 .log 文件的扩展名改为 .txt。
- 编写脚本,按文件大小从小到大排序后重命名。
示例代码框架
import os
from pathlib import Path
def rename_by_size(folder_path):
folder = Path(folder_path)
files = list(folder.iterdir())
# 按文件大小排序
files.sort(key=lambda f: f.stat().st_size)
for index, file in enumerate(files):
new_name = f"size_{index + 1}{file.suffix}"
new_path = folder / new_name
file.rename(new_path)
print(f"Renamed: {file} -> {new_path}")
# 测试
folder = "./test_folder"
rename_by_size(folder)
通过今天的学习,你已经掌握了文件批量重命名的基本方法和技巧。明天我们将探索更多高级的文件操作功能,敬请期待!