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

Python 3.6中能否更简便地实现文本文件的追加与读取?

更简便的文本文件读写方案(Python 3.6)

首先,你的代码功能是没问题的,但确实有更简洁、更健壮的实现方式——使用with语句(上下文管理器),它会自动帮你处理文件的关闭操作,不用手动调用close(),还能避免因异常导致文件未关闭的问题。

1. 拆分追加与读取(最直观)

如果不需要在同一个操作里完成追加和读取,分开用with语句是最清晰的:

# 追加内容到文件
with open("text_file.txt", "a") as text_file:
    # 注意加上换行符,不然内容会挤在一起
    text_file.write("Line 1\n")
    text_file.write("Line 2\n")
    text_file.write("Line 3\n")

# 读取文件内容
with open("text_file.txt", "r") as text_file:
    print(text_file.read())

2. 用a+模式一次完成追加和读取

如果你想少打开一次文件,可以用a+模式——它支持追加写入和读取,而且不会清空原有内容(这正是你要的,区别于r+的点)。不过要注意,打开a+模式时光标默认在文件末尾,读取前需要用seek(0)把光标移到文件开头:

with open("text_file.txt", "a+") as text_file:
    # 追加内容
    text_file.write("Line 1\n")
    text_file.write("Line 2\n")
    text_file.write("Line 3\n")
    
    # 将光标移到文件起始位置,才能读取全部内容
    text_file.seek(0)
    
    # 读取并打印
    print(text_file.read())

为什么这比你的原代码更好?

  • 不用手动调用close():with语句会在代码块结束后自动关闭文件,哪怕写入过程中抛出异常也能保证文件安全关闭。
  • 代码更简洁:减少了重复的open/close代码,可读性更高。
  • 更健壮:避免了因忘记close()导致的资源泄漏问题。

另外补充一点:你原代码里的write没有加换行符,最终文件里的内容会是Line1Line2Line3,加上\n才能让每一行单独显示,这个细节可能对你的游戏数据存储更友好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:22:03