刚学编程,问一下各位
为什么13行的print(f.read()) 打印出来的文字里面没有 “转朱阁,低绮户,照无眠。” 这句话
为什么将13行的print(f.read()) 改成15行就会报错
with open("./new_write.txt", "w", encoding="utf-8") as f:
# "w" 写入模式,如果文件原本存在内容,会把原本内容清空后重新写入新内容
f.write("""我欲乘风归去,
又恐琼楼玉宇,
高处不胜寒,\n""")
with open("./new_write.txt", "a", encoding="utf-8") as f:
# ”a" 附加模式,在文件原有内容上添加新内容
f.write("起舞弄清影,\n何似在人间.\n")
with open("./new_write.txt", "r+", encoding="utf-8") as f:
# “r+” 读写模式,可以读取文件,同时在文件原有内容上添加新内容
print(f.read())
f.write("转朱阁,低绮户,照无眠。")
# print(f.read())
参考GPT和自己的思路:
首先,13行的print(f.read()) 未能打印出“转朱阁,低绮户,照无眠。”是因为f.read()只读取了文件中第一个读入点以后的所有内容,而“转朱阁,低绮户,照无眠。”这句话是在f.write("转朱阁,低绮户,照无眠。")后写入的,而这行代码之前的所有内容都已经被读取了。
其次,将13行的print(f.read()) 改成15行就会报错是因为f.read()是一次性读取整个文件的内容,指针已经指向了文件末尾,再次调用f.read()会返回空的字符串。因此,可以使用f.seek(0),将文件指针移动到文件开头,然后再读取文件内容。所以,修改后代码应该如下所示:
11. with open("./new_write.txt", "r+", encoding="utf-8") as f:
12. # “r+” 读写模式,可以读取文件,同时在文件原有内容上添加新内容
13. print(f.read())
14. f.write("转朱阁,低绮户,照无眠。")
15. f.seek(0)
16. print(f.read())
这样就能正确地打印出文件中的所有内容了。
1.在13行read的时候,还没有写进文件里,当然读不出来
2.你到底是把13行改成15行,还是13行不动,增加15行