[英]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_list
和new_zip_list
并不能真正告诉您这些变量的作用或含义(而且,正如您现在所拥有的,其中只有一个是实际列表)。 最后,你把total_pop
一个int,然后转过来转成一个字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.