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

Python自动化办公之批量重命名

日常工作中总会遇到一些需要收集文件的情况,即便在收集前千叮咛万嘱咐,告知大家文件命名规则为 “编号-项目名称”,可最后收集回来的文件,名称依旧五花八门。有的使用横杠作为分隔符,有的却用下划线;编号错误的情况时有发生,甚至连项目名称也写错,这无疑给后续的文件整理和数据分析工作带来了极大的困扰。

比如,我们有一份正确的编号和项目名称对应关系的Excel表格,内容如下:

编号 项目名称
250211 苹果
250212 香蕉
250216 桃子

按照规范,收集到的文件命名应该是 “250211-苹果.docx”、“250212-香蕉.docx”、“250216-桃子.docx” 。但现实总是很残酷,实际收集到的文件却是 “250211_苹果.docx”(分隔符错误)、“2502122-香蕉.docx”(编号错误)、“250216-橘子.docx”(项目名称错误)。面对如此混乱的文件命名,人工逐一修改不仅耗时费力,还容易出错,这时我们急需工具进行批量重命名。Python作为强大的编程语言,能够高效解决这类问题,接下来就让我们看看如何通过Python实现批量重命名操作。

1. 需求分析

面对这些混乱的文件命名,我们需要解决以下关键问题:

  1. 统一分隔符: 将所有文件中不同的分隔符,如横杠、下划线等,全部替换为指定的横杠分隔符。
  2. 检查编号错误: 以Excel表格中的编号为基准,检查文件名中的编号是否有错误,如出现编号重复或编号不在Excel中则提醒人工检查。
  3. 纠正项目名称: 根据 Excel 表格中的映射关系,把错误的项目名称替换为正确的名称。

2. 安装依赖库

为达成上述功能,我们会运用Python的os库处理文件操作,re库进行正则表达式匹配与字符串替换,pandas库读取Excel文件中的映射关系。

在开始编写代码前,要确保已经安装了pandas库。若未安装,可通过以下命令进行安装:

pip install pandas

3. 代码实现

以下代码首先读取Excel文件中的编号与项目名称对应关系,然后遍历当前目录下的所有文件。对于每个文件,先统一分隔符,再检查编号是否正确,最后根据 Excel 中的映射关系纠正项目名称,并完成文件的重命名操作。在执行过程中,对于出现错误的文件,会给出相应的提示信息,方便人工进行检查和处理。

3.1 rename.py

import os
import pandas as pd
import re


def rename_files(excel_path, old_files_path, new_files_path):
    # 获取当前脚本所在目录
    parent = os.path.dirname(os.path.realpath(__file__))
    # 构建 Excel 文件的完整路径
    excel_path = os.path.join(parent, excel_path)
    # 构建待重命名文件所在目录的完整路径
    old_files_path = os.path.join(parent, old_files_path

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

相关文章:

  • CentOS虚机在线扩容系统盘数据盘
  • 探索技术新边界:让 HTML 电子凭证与二维码、PDF 完美融合
  • 利用HTML和css技术编写学校官网页面
  • SDKMAN! 的英文全称是 Software Development Kit Manager(软件开发工具包管理器)
  • 2025.2.8——二、Confusion1 SSTI模板注入|Jinja2模板
  • NLP Word Embeddings
  • MySQL 动态分区管理:自动化与优化实践
  • PortSwigger——WebSockets vulnerabilities
  • 【GeeRPC】Day5:支持 HTTP 协议
  • 浙江大华社招面试
  • PyTorch 中 `torch.cuda.amp` 相关警告的解决方法
  • 手撕Transformer编码器:从Self-Attention到Positional Encoding的PyTorch逐行实现
  • MySQL主从复制过程,延迟高,解决应对策略
  • MS08067练武场--WP
  • IntelliJ IDEA Console控制台输出成json的配置方式
  • 4、k8s的pod详解
  • 公开免费的API集合
  • 嵌入式音视频开发(零)移植ffmpeg及推流测试
  • Spring Boot 配置 Mybatis 读写分离
  • 【机器学习案列】车辆二氧化碳排放量预测
  • Redis哨兵模式相关问题及解决方案
  • <tauri><rust><GUI>基于rust和tauri的图片显示程序(本地图片的加载、显示、保存)
  • Qt QOpenGLFunctions详解
  • AF3 drmsd函数解读
  • .Net使用EF Core框架如何连接Oracle
  • JVM-Java虚拟机