繁体   English   中英

Python:如何将从 for 循环创建的列表写入文本文件

[英]Python: How to write a list created from for loop into a text file

使用字典对数据进行排序,我创建了 zip 代码及其人口的列表。 然后,我通过字典中的每个键对 go 使用 for 循环来查找匹配的 zip 代码,如果存在重复值(某些 ZIP 出现多次),则添加它们的总体。 我现在需要将在 for 循环中创建的长列表放入文本文件中。 我的问题是当我 go 将列表写回文件时,它只会获取我的最后 2 个值。 我的代码没有错误,但没有在文本文件中填充我的完整列表。 下面是我迄今为止的代码预览,它捕获了我的 zip 代码和人口总数。

for k in dict.keys():
    zip = (k)
    total_pop = int(dict[k]['pop']
    zip_list = [zip, str(total_pop)]
    new_zip_list = ",".join(zip_list)

    with open("test_file.txt", "w") as output:
       for row in new_zip_list:
           output.write(str(row)+"\n")

有人告诉我您不能将列表写入文本文件,因此创建了 new_zip_list 行以将我的列表转换为字符串。 不确定这是否正确?

问题似乎出在以下代码中: open("test_file.txt", "w") as output:

您正在写入文件而不是附加到它,因此您实际上不是添加到文本文件中,而是删除其内容并覆盖那里的内容

所以我建议把它改成: open("test_file.txt", "a") as output:

如果您知道此文件尚不存在,并且您只想在可以将open("test_file.txt", "w") as output:移动到第一个 for 循环之前访问它,这将创建文件让你写信给它。

1)将with线移到循环外部的顶部。 这将解决@jackosumtrades 指出的问题。

2) 改变你构造new_zip_list的方式。 现在,它是一个字符串。 当你用for循环遍历一个字符串时,它一次给你一个字符。 这是一种方法:

new_zip_list = [] # initialize

for k in dict.keys():
    new_zip_list.append(zip_list)

with open("test_file.txt", "w") as output:
    # write your output here

作为旁注,您的代码非常混乱。 首先,您使用zip作为变量,覆盖内置 function 的名称。 其次,变量zip_listnew_zip_list并不能真正告诉您这些变量的作用或含义(而且,正如您现在所拥有的,其中只有一个是实际列表)。 最后,你把total_pop一个int,然后转过来转成一个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM