我有这样的字典
print(sample_dict)
dict_items([('SAP', ['SAP_MM_1.gz', 'SAP_MM_2.gz']), ('LUF',['LUF_1.gz', 'LUF_2.gz'])])
sample1 = {x:[sample_dict[x][0]] for x in sample_dict}
print(sample1)
dict_items {'SAP': ['SAP_MM_1.gz'],
'LUF': ['LUF_1.gz']}
现在,我需要在上面的sample1
中将密钥作为doc文件编写,这就是我尝试过的。
for sam in sample1.keys():
doc = sam + '.doc'
doc = open(doc, 'w')
doc.write("A: [\n")
现在,它为SAP
和LUF
创建了两个文件,但是仅写入了SAP,而其他文件为空。 for循环以某种方式避免在key
中写入最后一个sample1
。我不明白这里出了什么问题。任何建议,将不胜感激。
谢谢
答案 0 :(得分:3)
我认为这可能是Python不刷新流的情况。您可能应该在写入后关闭文件(或者最好使用上下文管理器):
with open(doc, 'w') as my_file:
my_file.write('whatever')
答案 1 :(得分:3)
写入文件后,您不会关闭文件。您可以显式关闭它,但是仅使用with
会更容易,因为即使代码失败,该操作也会关闭文件。
for sam in sample1.keys():
doc = sam + '.doc'
with output as open(doc, 'w'):
output.write("A: [\n")
答案 2 :(得分:2)
在写入文件之前,应先打开两个单独的文件。我的方法如下所示:
for sam in sample1.keys():
with open(sam + '.doc', 'w') as sam_doc:
sam_doc.write("A: [\n")
说明
使用with
语句打开文件会在更新后自动关闭文件。