首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >For循环避免在字典中写入最后一个键。

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

Stack Overflow用户
提问于 2019-01-31 10:47:35
回答 3查看 66关注 0票数 2

我有这样一本字典,

代码语言:javascript
复制
 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文件写入,这就是我尝试过的。

代码语言:javascript
复制
 for sam in sample1.keys():
    doc  = sam + '.doc'
    doc  = open(doc, 'w')
    doc.write("A: [\n")

现在,它为SAPLUF创建了两个文件,但只有SAP被写入,其他文件为空。For循环在某种程度上避免在sample1中写入最后一个sample1。我不明白这是怎么回事。如有任何建议,将不胜感激。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-31 10:52:13

我认为这可能是Python不冲流的情况。您可能应该在编写完文件后关闭该文件(或者更好地使用上下文管理器):

代码语言:javascript
复制
with open(doc, 'w') as my_file:
    my_file.write('whatever')
票数 3
EN

Stack Overflow用户

发布于 2019-01-31 10:53:42

您在写完文件后,不会关闭它。您可以显式地关闭它,但是使用with就更容易了,因为即使代码失败,它也会关闭文件。

代码语言:javascript
复制
 for sam in sample1.keys():
    doc  = sam + '.doc'
    with output as open(doc, 'w'):
        output.write("A: [\n")
票数 3
EN

Stack Overflow用户

发布于 2019-01-31 10:53:46

在写入文件之前,您应该打开两个单独的文件。我的方法如下:

代码语言:javascript
复制
for sam in sample1.keys():
    with open(sam + '.doc', 'w') as sam_doc:
        sam_doc.write("A: [\n")

解释

使用with语句打开文件,在更新后自动关闭该文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54458830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档