Python数据处理:文件的自动化重命名与整合

Python数据处理:文件的自动化重命名与整合

本文将介绍如何使用Python自动化处理财务报表文件,实现从个体公司到行业维度的数据整合。

需求

在实际工作中,我们通常会收集到多家公司的财务报表,文件命名格式为"公司名称_报表类型.csv",例如"某软件有限公司_资产负债表.csv"。当需要进行行业分析时,我们希望将同类型的报表整合,重命名为"行业_报表类型.csv"的格式。手动操作不仅耗时,还容易出错,因此自动化处理成为必然选择。

解决方案

以下是一个Python脚本,可以自动扫描指定文件夹中的CSV财务报表文件,并按照报表类型进行重命名:

python 复制代码
import os
import pandas as pd
import re

# 指定文件夹路径
folder_path = r"D:\123"

# 检查文件夹是否存在
if not os.path.exists(folder_path):
    print(f"文件夹 {folder_path} 不存在")
    exit(1)

# 获取文件夹中的所有文件
files = os.listdir(folder_path)

# 定义文件类型和对应的新命名模式
file_types = {
    "资产负债表": "行业_资产负债表.csv",
    "利润表": "行业_利润表.csv",
    "现金流量表": "行业_现金流量表.csv"
}

# 处理文件
processed_count = 0
for file in files:
    if file.endswith(".csv"):
        # 查找匹配的文件类型
        for file_type in file_types:
            if file_type in file:
                # 找到匹配的文件类型
                old_path = os.path.join(folder_path, file)
                new_path = os.path.join(folder_path, file_types[file_type])
                
                # 如果目标文件已存在,先删除
                if os.path.exists(new_path):
                    os.remove(new_path)
                
                # 重命名文件
                os.rename(old_path, new_path)
                
                print(f"已将 {file} 重命名为 {file_types[file_type]}")
                processed_count += 1
                break

print(f"处理完成,共重命名 {processed_count} 个文件")

代码解析

1. 环境准备

首先导入必要的库:os用于文件操作,pandas用于数据处理,re用于正则表达式匹配(虽然在当前代码中未使用,但在更复杂的匹配场景中很有用)。

2. 文件夹路径设置

指定要处理的文件夹路径,并验证其是否存在。这是一个基本的错误处理机制,确保在文件夹不存在时及时终止程序。

3. 文件类型定义

创建一个字典,将原始报表类型映射到目标文件名。这样设计使代码更具扩展性,如果日后需要处理更多类型的报表,只需在字典中添加对应映射即可。

4. 文件处理循环

遍历文件夹中的所有文件,对每个CSV文件进行处理:

  • 检查文件名是否包含我们关注的报表类型
  • 构建原路径和新路径
  • 如果目标文件已存在,先删除它(避免命名冲突)
  • 重命名文件
  • 输出处理结果并计数

5. 结果统计

最后输出处理的文件总数,方便用户了解操作结果。

相关推荐
freejackman5 小时前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
.痞老板.6 小时前
mysql初阶--增删改查操作
数据库·mysql
羲云网络6 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
橙橙笔记10 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事10 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
lambo mercy12 小时前
AI智能租房助手
数据库
天天被压力12 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力12 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A13 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
小lo想吃棒棒糖13 小时前
把机器人训练从 GPU 搬到昇腾 NPU:启元 Q1 起身动作 PPO 训练全记录
python·机器人·昇腾·启元机器人