首页 > 解决方案 > Python:Glob 只读取一个文件而不是两个

问题描述

我有两个不同的 .txt 文件。我正在尝试阅读并将它们变成字典。我注意到在我拥有的功能上,它只读取其中一个文件。我认为 glob 至少会通读所有这些。

当我只是尝试读取文件而不将它们变成字典时,此代码有效。它从两个 .txt 文件中打印出内容

data = ""
for file in glob.glob(".txt"):
    with open(file) as filenames:
        data = data + filenames.read()
return data

当我尝试使用某些正则表达式模式读取文件以读取某些字符串时,它只能识别其中一个文件。这是我的两个文件和功能:

文件1.txt

file.py Marvel/GuardiansOfGalaxy 300 1
file.py DC/Batman 504 1
file.py GameOfThrones 900 0
file.py DC/Superman 200 1
file.py Marvel/CaptainAmerica 342 0

文件2.txt

file.py Science/Biology 200 1
file.py Math/Calculus 342 0
file.py Psychology 324 1
file.py Anthropology 234 0
file.py Science/Chemistry 444 1

功能:

import glob
import re 

def read():
  pattern = re.compile(r"file\.py (.+).*? (\d+) \d+")

  data_files = []
  for file in glob.glob("*.txt"):
    with open(file, 'r') as filenames:

      data_files = dict(pattern.findall(filenames.read()))

  return data_files

print(read())

我需要我的输出来读取这两个文件,并使字典输出开始一个新的行,如:

'Science/Biology': '200'
'Math/Calculus': '342'
'Psychology': '324'
....

我希望我的问题是有道理的。谢谢!

标签: pythonregexpython-3.xfileglob

解决方案


推荐阅读