For循环避免在字典中写入最后一个键

时间:2019-01-31 10:47:36

标签: python dictionary

我有这样的字典

 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")

现在,它为SAPLUF创建了两个文件,但是仅写入了SAP,而其他文件为空。 for循环以某种方式避免在key中写入最后一个sample1。我不明白这里出了什么问题。任何建议,将不胜感激。

谢谢

3 个答案:

答案 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语句打开文件会在更新后自动关闭文件。