关于#python#的问题,如何解决?

刚学编程,问一下各位
为什么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行