关于python两次调用open产生的问题

Scorpio lam Scorpio lam 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
f = open('data.txt', 'w+')
for i in range(300):
f.write('hello world:'+str(i)+'\n')

g = open('data.txt')
print(g.read())

print结果为空:' '
手动打开data.txt:内容已经完整写入 hello world:0 ~hello world:299
此处我理解为:f.write后光标到达文件尾部,此处再次open所得的文件偏移量与第一次open一致,因此print为空

但是,当我把range(300)改成3000,print结果就不一样了,如下:
f = open('data.txt', 'w+')
for i in range(3000):
f.write('hello world:'+str(i)+'\n')

g = open('data.txt')
print(g.read())

print结果:hello world:0~hello world:2795 也就是还有一部分没有print出来
手动打开data.txt:内容已经完整写入:hello world:0 ~hello world:2999

这个地方一直想不明白。针对第二个程序,虽然在print之前调用close()后能正常输出,这里试着不调用close()进行分析:按第一个程序的理解:写入后光标应该在文件尾部,为什么print还能输出内容?而且输出的内容不少。
另外,手动打开data.txt可看到完整内容,意味着这两个程序都已完整写入data.txt了吧?
麻烦大神们指点迷津,感谢!
...全文

相关推荐

评论 13
收藏 已收藏
分享
返回顶部
Scorpio lam
脚本语言 37,737 成员 34,208 内容