我在一个目录中有一些像下面这样的文件,我在其中通过目录循环处理每个文件。
tenents.txt
people.txt
customers.txt
clients'.txt
我正在尝试动态创建一个字典,如下所示,我在上下两边都进行了搜索,并在此处尝试了类似的示例,但无法获得所需的输出。需要别人的帮助来确定我在做什么错:
[{'input' : 'tenents.txt' , 'config':'tenents.json'},{'input' : 'people.txt' , 'config':'people.json'}
{'input' : 'customers.txt' , 'config':'customers.json'},{'input' : 'clients.txt' , 'config':'clients.json'}]
我的代码的实际输出:
[{'config': 'tenents.json','input': 'tenents.txt'}]
[{'config': 'people.json','input': 'people.txt'}]
[{'config': 'customers.json','input': 'customers.txt'}]
[{'config': 'clients.json','input': 'clients.txt'}]
为什么键从左到右顺序错误。为什么在我尝试对输入键进行排序之后,输入键还是会出现在输入键之前?
我的代码片段无效:
import os
from pprint import pprint
filelist = []
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".txt"):
keys = ['input', 'config']
filename = os.path.join(root, file)
cname = filename.rstrip('.txt') + '.json'
names = [[filename, cname]]
filelist = [{k: v for k, v in zip(keys, n)} for n in names]
pprint(filelist)
我会感谢某人的帮助。我正在使用anaconda python 3。
答案 0 :(得分:0)
以下代码似乎有效:
file_list = []
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith('.txt'):
file_list.append({'input': file, 'config': file.replace('.txt', '.json')})
print(file_list)
我刚刚像您一样创建了一个文件列表,并为每个文件附加了带有相应值的字典。