You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何按文件名前缀读取目录下多个TXT文件并提取指定列

解决方案

一、前缀匹配读取文件实现

该需求完全可以实现,你原有代码的核心思路是正确的,仅存在参数调用顺序错误、匹配逻辑不够灵活的小问题,优化后的实现如下:

import os
import re
import pandas as pd

def find_files_by_prefix(directory, file_prefix):
    """
    根据固定前缀匹配目标目录下的文件
    返回格式:{实体标识: 对应文件的完整路径}
    """
    entity_file_map = {}
    for filename in os.listdir(directory):
        # 仅匹配前缀符合、后缀为txt的有效文件
        if filename.startswith(file_prefix) and filename.endswith(".txt"):
            # 提取实体标识:MH开头的文件取首个下划线前的内容作为实体,无MH前缀默认是MHI主体
            if filename.startswith("MH"):
                entity = re.findall(r"^([A-Z]+)_", filename)[0]
            else:
                entity = "MHI"
            # 用os.path.join拼接路径,避免Windows/Linux路径分隔符兼容问题
            entity_file_map[entity] = os.path.join(directory, filename)
    return entity_file_map

调用示例

# 核心参数顺序:第一个是文件目录,第二个是你要匹配的固定前缀
# 获取所有MHEU主体的交易文件
mheu_trade_map = find_files_by_prefix(CoreMurexFilesLoc, "MHEU_Trade_")
# 获取所有MHBK主体的现金交易文件
mhbk_cash_map = find_files_by_prefix(CoreMurexFilesLoc, "MHBK_TradeCash_")
# 获取MHI主体的交易文件
mhi_trade_map = find_files_by_prefix(CoreMurexFilesLoc, "Trade_")

# 读取MHI交易文件为数据框
if "MHI" in mhi_trade_map:
    mhi_trade_df = pd.read_csv(mhi_trade_map["MHI"], delimiter="|")

二、指定列数据获取方法

用pd.read_csv读取|分隔的txt文件后,完全支持按列名或者列索引获取指定列数值:

  • 按列名取值:mhi_trade_df["目标列名"]
  • 按列索引取值(索引从0开始,示例取第2列):mhi_trade_df.iloc[:, 1]
  • 批量取多列:mhi_trade_df[["列名1", "列名3"]] 或 mhi_trade_df.iloc[:, [0, 2]]

如果你的txt文件没有内置表头,读取时添加header=None参数,还可以自定义列名:

df = pd.read_csv(文件路径, sep="|", header=None, names=["自定义列名1", "自定义列名2", "自定义列名3"])

内容的提问来源于stack exchange,提问作者Bruno Lorena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:54:04