python - 如何读取多个 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 文件由 | 分隔。?
解决方案
我建议首先列出文件夹中的文件名。
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]
推荐阅读
- python - 包含数据类型的最小/最大值(和检查限制)的头文件的 Python 替代方案
- javascript - 如何对一组用户定义的对象进行 jsonize 处理?
- apache-kafka - 如何在不同缩放级别使用 S2 几何库聚合用户的实时地理位置?
- c# - 二十一点程序在开始游戏后冻结
- unit-testing - 使用 objFromFixture 方法从夹具中检索对象时,SilverStripe 蓝宝石单元测试抛出错误,“找不到对象”
- struct - 如何将一个结构向量映射或转换为另一个结构向量?
- swift - 标签栏控制器索引更改?
- excel - 通过单击 Excel VBA 中的上一个来创建一系列按钮
- visual-studio - MFC:如何首先显示欢迎对话框?
- python - 确定不超过某个数字的所有正奇数的总和