我如何使一个字典的文件名作为关键和行在文件列表?



我在一个文件夹里有一堆。txt文件。文本文件看起来像

0 45 67 78 56
1 56 45 35 45
5 56 66 34 21

我只想要每行的第一个字符(例如这里我想要0,15并将它们存储在[0,1,5]这样的列表中)。现在我想将这些列表与文件名一起作为键值对存储在一个名为classes的字典中。类应该看起来像:

classes={'Q.txt'=[0,1,1,9],
'T.txt'=[0,1],
...}

代码:

path = "C:/....../" # path to the folder
l=[]#empty list to store
classes={} # my dictionary
for filename in glob.glob(os.path.join(path, '*.txt')):
with open(os.path.join(os.getcwd(), filename), 'r') as f: # open in readonly mode
for line in f.readlines():
l.append(int(line[0]))
classes[filename.split(os.sep)[1][:-4]]=l

现在我得到的是:

classses={'Q.txt': [0,0,1,1,9,0,1,............],
'T.txt': [0,0,1,1,9,0,1,............],
...}

意味着它附加了所有文件中所有字符的整个列表,当我只想让字典包含对应于各自文件名的列表时。我该如何解决这个问题?

所以你需要做的是在循环开始时重置l。您可以使用os.path.basename从完整路径中获取文件名。

path = "C:/....../" # path to the folder
classes={} # my dictionary
for filename in glob.glob(os.path.join(path, '*.txt')):
l=[]#empty list to store
with open(os.path.join(os.getcwd(), filename), 'r') as f: # open in readonly mode
for line in f:
l.append(int(line[0]))
classes[os.path.basename(filename)]=l

最新更新