循环遍历文件夹中的多个 .txt 文件(使用 glob)并将它们合并

Loop through multiple .txt files in the folder (using glob) and combine them

我是 Python 的新手,有一项任务正在部分完成,希望得到一些支持。

任务:遍历数据文件夹中的多个 .txt 文件(使用 glob)并将它们组合成一个字典

对于每个文件,执行以下操作:

  1. 打开它
  2. 像上一个任务一样将数据提取到字典中
  3. 将词典添加到持有者列表中

到目前为止,这是我的代码,但输出为空白

from glob import glob
import os.path

# make an empty list to hold the data
holder = []
key = ["id","age","gender"]

# for each text file in the data folder,
for filepath in glob("data/*.txt"):
   
 #load the file
    with open(filepath, 'r') as file:
        data = file.read().split()
        dictionary = dict(zip(key, file))
    holder.append(dictionary)

print(holder)

输出显示: [{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{ }、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}]

以下是其中 1 个文本文件的样子:

这是更新代码的另一张图片,它在布局方面几乎就在那里,但每个词典都有相同的数据,它似乎并没有遍历所有文件。

我假设你想做这样的事情:

from glob import glob
import os.path

# make an empty list to hold the data
holder = []
key = ["id","age","gender"]

# for each text file in the data folder,
for filepath in glob("data/*.txt"):

 #load the file
    with open(filepath, 'r') as file:
        rows = file.read().split("\n")
        for row in rows:
            data = row.split(",")
            holder.append(dict(zip(key, data)))

print(holder)

因此您必须以某种方式遍历行并将数据附加到持有者。

因此 for row in file: 也是可能的,但在这种情况下,您还必须处理 eol(\n 至少如果您将其视为文本文件)。

更新 使用新信息,我认为您只需将 zip 函数中的 data Variable 替换为行。

...
 #load the file
    with open(filepath, 'r') as file:
        rows = file.read().split("\n")
        #for row in rows:
            #data = row.split(",")
            holder.append(dict(zip(key, rows)))

print(holder)