如何将多条带换行的输入写入文本文件且程序重跑时自动覆盖?
问题根因
- 原代码循环内每次调用
open('filename', 'w')时,w写入模式会直接清空文件已有内容再写入,前14次输入的内容都会被后一次的写入操作清空,最终仅保留最后一条输入 - 循环末尾
f = open('filename', "a")仅用追加模式打开文件但无写入操作,属于冗余无效代码
符合需求的修复方案
你的需求是程序重新运行时覆盖原有内容,只需要把文件打开操作移到循环外层,一次性打开后循环写入所有输入即可,推荐使用with上下文管理器自动管理文件资源,无需手动调用close():
# 先以w模式打开文件,启动时直接覆盖原有内容 with open('filename', 'w', encoding='utf-8') as f: for i in range(0,15): ele = input(f"{i+1}. ") f.write(f"{ele}\n")
如果不使用with语法,也可以按如下方式编写:
f = open('filename', 'w', encoding='utf-8') for i in range(0,15): ele = input(str(i + 1) + ". ") f.write("%s\n" %(ele)) # 所有内容写入完成后再关闭文件 f.close()
内容的提问来源于stack exchange,提问作者Majin Board
相关产品推荐
相关产品推荐

