程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

20 天学 Python 文件操作:Day 14 批量重命名文件

hfteth 2025-02-19 12:10:19 技术文章 12 ℃

文件批量重命名是日常工作中常见的需求。今天我们将学习如何用 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. 实践练习

  1. 在一个文件夹中,批量重命名所有图片文件,添加日期作为前缀。
  2. 将所有 .log 文件的扩展名改为 .txt。
  3. 编写脚本,按文件大小从小到大排序后重命名。

示例代码框架

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)

通过今天的学习,你已经掌握了文件批量重命名的基本方法和技巧。明天我们将探索更多高级的文件操作功能,敬请期待!

Tags:

最近发表
标签列表