You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python代码实现运行函数时写入内容到.txt文件并读取

现有代码问题汇总

add函数问题

  • 逻辑顺序错误:先执行写入操作再判断是否退出,会把触发退出的关键词Enter也写入文件
  • 冗余操作:with上下文管理器会在代码块执行完毕后自动关闭文件,额外调用f.close()属于无效操作,部分场景下还会抛出异常
  • 写入格式问题:没有添加换行符分隔多条记录,多次输入的内容会拼接成一行,后续无法区分不同联系人信息
  • 退出逻辑不合理:仅当输入内容完全等于Enter时才退出,和输入提示的表述不符,也会导致无法正常保存名为Enter的联系人

read函数问题

  • 未自动释放文件资源:没有使用with上下文管理器操作文件,操作完成后文件对象不会自动关闭,会造成资源泄漏
  • 方法未调用:print(f.read)仅打印read方法本身的内存地址,没有加括号调用方法,无法输出文件实际内容
  • 无异常处理:当Telefon.txt文件不存在时,直接调用函数会抛出FileNotFoundError报错,没有友好提示
修正后代码
def add():
    while True:
        name = input("请输入姓名和号码(直接回车即可退出添加):")
        # 先判断退出条件,避免无效内容写入
        if not name:
            break
        with open("Telefon.txt", "a", encoding="utf-8") as f:
            # 每条记录后加换行符分隔
            f.write(f"{name}\n")

def read():
    try:
        with open("Telefon.txt", "r", encoding="utf-8") as f:
            # 调用read方法读取完整内容
            print(f.read())
    except FileNotFoundError:
        print("通讯录文件不存在,请先添加联系人记录")
补充说明

如果需要保留原代码输入Enter才退出的逻辑,只需要把add函数里的退出判断条件改为if name == "Enter":即可。

内容的提问来源于stack exchange,提问作者Sondre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:45:06