m0_57065547 2023-03-20 10:59 采纳率: 100%
浏览 34
已结题

关于#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())


  • 写回答

3条回答 默认 最新

  • 追cium 2023-03-20 11:02
    关注

    参考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())
    

    这样就能正确地打印出文件中的所有内容了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月20日

悬赏问题

  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳