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
相关产品推荐
相关产品推荐

