Python将列表写入文本文件仅显示最后一项问题求助
Python写文件仅显示列表最后一项的问题排查与解决
你提供的写文件函数本身逻辑没有错误,出现仅保留最后一项的问题,通常是以下两种原因导致:
- 你在循环中多次调用该函数,每次调用时
open(filename, "w")使用的w(写入模式)会清空文件原有内容,前几次写入的内容被后续调用覆盖,最终仅保留最后一次调用传入的内容 - 传入的
daymonths列表中的元素自带回车符\r,写入时会将光标移到行首,后续内容直接覆盖前一行的显示内容,肉眼观测仅剩下最后一项
解决步骤
- 先验证传入参数是否正确,在函数第一行添加
print(daymonths),检查控制台输出的列表是否包含所有预期元素 - 如果是多次调用函数导致的覆盖问题,可二选一解决:
- 提前把所有要写入的内容汇总成一个完整列表,仅调用一次
writefile函数 - 将文件打开模式从
"w"改为"a"(追加模式),注意该模式会在原有内容后新增内容,首次运行前需要手动清空旧文件避免残留内容
- 提前把所有要写入的内容汇总成一个完整列表,仅调用一次
- 推荐使用上下文管理器优化写文件逻辑,自动处理文件关闭,避免缓冲区内容未完全写入磁盘的问题:
def writefile(daymonths): filename = "/Users/admin/Documents/Month.txt" # 使用with上下文管理器,不需要手动调用close方法 with open(filename, "w", encoding="utf-8") as outputfile: months = ["{}\n".format(month) for month in daymonths] outputfile.writelines(months)
内容的提问来源于stack exchange,提问作者Ayesha
相关产品推荐
相关产品推荐

