首页 > 解决方案 > 如何读取多个 txt 文件 - Python

问题描述

我是 python 新手,需要从目录中读取这些文件。

MHBK_Trade_20210924_8387_20211007113214.txt
MHBK_TradeCash_20210924_8387_20211007113214.txt
MHEU_Trade_20210924_6144_20211007113525.txt
MHEU_TradeCash_20210924_6144_20211007113525.tx
Trade_20210924_7190_20211007113353.txt
TradeCash_20210924_7190_20211007113353.txt

我正在这样做以读取文件。

但是这样每次我都要告知文件的完整名称。我只想阅读第一部分,因为这永远不会改变。

def findmefile(directory, containsInFilename):
    entity_filenames = {}
    for file in os.listdir(directory):
        if containsInFilename in file:
            entity_filenames[re.findall("(.*?)_", file)[0]] = file
    return entity_filenames


# Get the core Murex file names
MHItradefiles = findmefile(CoreMurexFilesLoc, "Trade_20210924_7190_20211007113353.txt")
# MHItradeCashfiles = findmefile("TradeCash_", CoreMurexFilesLoc)
# MHEUtradefiles = findmefile("MHEU_Trade_", CoreMurexFilesLoc)
# MHEUtradeCashfiles = findmefile("MHEU_TradeCash_", CoreMurexFilesLoc)

MHItradefiles = pd.read_csv(
    CoreMurexFilesLoc + "\\" + "Trade_20210924_7190_20211007113353.txt", delimiter="|"
)

print(MHItradefiles)

我想知道是否可以从第一部分读取这些文件,因为它们来自不同的实体。这可能吗?

我需要特定列的值,我可以通过列名或其索引获取值。txt 文件由 | 分隔。?

标签: pythonautomationtxt

解决方案


我建议首先列出文件夹中的文件名。

from glob import glob
import os

files = glob(CoreMurexFilesLoc + '\\*')

然后您可以检查文件夹中是否存在单个文件:CoreMurexFilesLoc + "\\Trade_20210924_7190_20211007113353.txt" in files

或者您可以检索以某个字符串开头的所有文件名:

MHItradeCashfiles = [i for i in files if os.path.basename(i).startswith('TradeCash_')] # or [i for i in files if 'TradeCash_' in i]

推荐阅读