Python将列表元素写入文本文件仅保留最后一项问题咨询
问题触发原因
你代码的问题出在文件打开逻辑和写入模式的选择上:
open("file.txt", "w")里的w是覆盖写入模式,每次以该模式打开已存在的文件时,会直接清空文件内的所有原有内容- 你把
with open(...)的逻辑放在了for循环内部,每次循环都会重新以w模式打开文件,前一次循环写入的内容会被直接清空,最终仅会保留最后一次循环写入的元素3
可行解决方案
方案1:将文件打开逻辑移到循环外部(最推荐)
仅打开、关闭文件一次,IO开销最小,性能最高:
example_list = ["1", "2", "3"] # 循环外仅打开一次文件 with open("file.txt", "w") as f: for i in example_list: # 若需要每个元素单独占一行,可改为 f.write(i + '\n') f.write(i)
方案2:修改写入模式为追加模式(仅适用于必须循环内开文件的特殊场景)
将w模式改为a(追加模式),每次打开文件不会清空原有内容,会在文件末尾追加写入新内容:
example_list = ["1", "2", "3"] for i in example_list: # a为追加写入模式 with open("file.txt", "a") as f: f.write(i)
注意:该方案需要频繁打开关闭文件,列表元素较多时性能较差,非特殊情况不推荐使用
方案3:拼接内容后一次性写入
先把所有要写入的内容拼接为完整字符串,仅做一次写入操作:
example_list = ["1", "2", "3"] # 若需要每个元素单独占一行,可改为 '\n'.join(example_list) full_content = ''.join(example_list) with open("file.txt", "w") as f: f.write(full_content)
内容的提问来源于stack exchange,提问作者plshelpty
相关产品推荐
相关产品推荐

