当前位置: 首页 > article >正文

Python批量重命名文件的实用案例

Python批量重命名文件的实用案例

引言

在日常工作中,我们常常会遇到需要批量处理文件的情况,例如整理照片、管理文档等。手动逐个重命名文件既费时又容易出错。Python 提供了强大的文件操作功能,可以帮助我们快速实现批量重命名。本文将通过几个实际案例,详细介绍如何使用 Python 批量重命名文件。


案例背景

假设我们有一个包含多个图片文件的文件夹,文件名格式如下:

image_001.jpg 
image_002.jpg 
image_003.jpg 
...

我们的目标是将这些文件名中的编号部分提取出来,并按照新的格式重新命名文件。例如,将文件名改为:

new_image_1.jpg 
new_image_2.jpg 
new_image_3.jpg 
...

此外,我们还可能遇到其他类型的批量重命名需求,例如:

  1. 将所有文件名中的特定字符替换为另一个字符。
  2. 在文件名中添加或删除某些前缀/后缀。
  3. 按照某种规则重新排序文件名。

实现思路

  1. 确定文件路径和目标格式

首先,我们需要明确待处理文件所在的路径以及目标文件名的格式。可以通过以下方式获取文件列表:

import os 
 
获取当前目录下的所有文件 
current_dir = os.getcwd()
files = os.listdir(current_dir)
  1. 编写重命名逻辑

根据具体需求,编写重命名逻辑。例如,对于上述案例,我们可以提取文件名中的编号部分,并将其转换为新的格式。

  1. 处理异常情况

在批量处理文件时,可能会遇到一些异常情况,例如文件不存在、权限不足等。因此,在编写代码时需要加入异常处理机制,以避免程序崩溃。


代码实现

案例 1:简单数字递增重命名

目标

将文件名中的编号部分提取出来,并按照新的格式重新命名文件。

实现步骤

  1. 遍历文件夹中的所有文件。
  2. 对于每个文件,检查其是否符合特定的命名格式(例如 image_XXX.jpg)。
  3. 提取编号部分,并将其转换为整数。
  4. 生成新的文件名,并执行重命名操作。

代码示例

import os 
 
def rename_files():
    # 设置目标路径 
    target_dir = os.getcwd()
    
    # 遍历目录中的所有文件 
    for filename in os.listdir(target_dir):
        # 检查文件是否为 JPG 格式 
        if filename.endswith('.jpg'):
            # 分割文件名和扩展名 
            name, ext = os.path.splitext(filename)
            
            # 提取编号部分(假设格式为 image_XXX)
            if name.startswith('image_'):
                # 提取编号字符串 
                num_str = name.split('_')[1]
                
                try:
                    # 转换为整数 
                    num = int(num_str)
                    
                    # 生成新的文件名 
                    new_name = f'new_image_{num}{ext}'
                    
                    # 执行重命名操作 
                    os.rename(os.path.join(target_dir, filename), 
                              os.path.join(target_dir, new_name))
                    print(f'Successfully renamed {filename} to {new_name}')
                except ValueError:
                    print(f'Skipped {filename}: invalid number format')
                    
rename_files()

输出结果

Successfully renamed image_001.jpg to new_image_1.jpg 
Successfully renamed image_002.jpg to new_image_2.jpg 
...

案例 2:复杂替换规则

目标

将文件名中的特定字符替换为另一个字符。例如,将所有下划线 _ 替换为连字符 -

实现步骤

  1. 遍历文件夹中的所有文件。
  2. 对于每个文件名,使用字符串替换方法进行处理。
  3. 生成新的文件名,并执行重命名操作。

代码示例

import os 
 
def replace_chars_in_filenames():
    target_dir = os.getcwd()
    
    for filename in os.listdir(target_dir):
        # 替换下划线为连字符 
        new_filename = filename.replace('_', '-')
        
        if new_filename != filename:  # 确保只有在发生变化时才重命名 
            try:
                os.rename(os.path.join(target_dir, filename),
                          os.path.join(target_dir, new_filename))
                print(f'Successfully renamed {filename} to {new_filename}')
            except Exception as e:
                print(f'Error renaming {filename}: {str(e)}')
 
replace_chars_in_filenames()

输出结果

Successfully renamed file_name.txt to file-name.txt 
...

案例 3:跨文件夹批量重命名

目标

对多个子文件夹中的文件进行批量重命名。例如,将所有子文件夹中的 .txt 文件统一添加前缀 backup_

实现步骤

  1. 使用 os.walk 遍历整个目录树。
  2. 对于每个找到的 .txt 文件,生成新的文件名。
  3. 执行重命名操作。

代码示例

import os 
 
def batch_rename_in_subfolders():
    root_dir = os.getcwd()  # 设置根目录 
    
    for dirpath, dirnames, filenames in os.walk(root_dir):
        for filename in filenames:
            if filename.endswith('.txt'):
                # 构建旧文件路径 
                old_file_path = os.path.join(dirpath, filename)
                
                # 生成新文件名 
                new_filename = f'backup_{filename}'
                new_file_path = os.path.join(dirpath, new_filename)
                
                try:
                    os.rename(old_file_path, new_file_path)
                    print(f'Successfully renamed {old_file_path} to {new_file_path}')
                except Exception as e:
                    print(f'Error renaming {old_file_path}: {str(e)}')
 
batch_rename_in_subfolders()

输出结果

Successfully renamed ./subfolder/file.txt to ./subfolder/backup_file.txt 
...

总结

通过以上三个案例,我们展示了如何使用 Python 实现不同场景下的批量重命名需求。无论是简单的数字递增、字符替换,还是跨文件夹的复杂操作,Python 都提供了灵活且高效的解决方案。

如果你有更复杂的重命名需求,可以结合正则表达式或其他高级技巧进一步扩展这些脚本的功能。希望这篇文章能帮助你更好地利用 Python 自动化你的文件管理任务!


http://www.kler.cn/a/535062.html

相关文章:

  • 数据结构与算法学习笔记----博弈论
  • GGML、GGUF、GPTQ 都是啥?
  • 【Linux网络编程】:URL(encode),HTTP协议,telnet工具
  • 开源安全一站式构建!开启企业开源治理新篇章
  • vue2-key的原理与作用
  • 网络爬虫会对服务器造成哪些影响?
  • 【Linux高级IO】五种IO模型
  • 手写MVVM框架-渲染v-for列表(修改List)
  • VUE 集成企微机器人通知
  • hot100(8)
  • 《工业4.0时代?!》
  • 【Flutter】【WEB3】判断一个String是不是钱包地址
  • Linux——基础命令1
  • 线程同步时定义 std::mutex 为什么要在前面添加 mutable 关键字
  • 旋转变压器工作及解调原理
  • Vue3-管理状态 effectScope
  • OpenAI向所有用户开放ChatGPT搜索,无需账号登录
  • 网络工程师 (20)计算机网络的概念
  • [SAP ABAP] 面向对象程序设计-构造方法
  • SpringCloud基础 入门级 学习SpringCloud 超详细(简单通俗易懂)
  • 为什么使用springboot框架,springboot常用的配置文件,如何读取配置文件中自定义的内容,多环境下如何切换配置文件,包扫描原理,自动装配的原理
  • 变压器-000000
  • Android性能调优之需要掌握Dalvik和ART的知识
  • win编译openssl
  • 前部分知识复习05
  • 机器学习大模型问题记录