关于python两次调用open产生的问题
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了吧?
麻烦大神们指点迷津,感谢!
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了吧?
麻烦大神们指点迷津,感谢!
...全文
相关推荐
Python学习笔记之open()函数打开文件路径报错问题
对于初学者来说,使用open()函数时经常会遇到路径报错的问题,这个问题主要出现在Windows系统中,因为Windows的文件路径通常使用反斜杠'\', 而Python字符串中的反斜杠用作转义字符的引导
浅谈python 调用open()打开文件时路径出错的原因
### Python调用`open()`打开文件时路径出错的原因及解决方法在使用Python进行文件操作时,经常会遇到使用`open()`函数打开文件时出现路径错误的问题。
解决python使用open打开文件中文乱码的问题
"解决python使用open打开文件中文乱码的问题"在Python编程中,处理中文字符时经常遇到乱码问题,特别是在读写包含中文的文本文件时。本篇内容将介绍如何解决Python使用`open`函数
Python 解决OPEN读文件报错 ,路径以及r的问题
在Python编程中,处理文件路径时可能会遇到`'unicodeescape' codec can't decode bytes`的错误,特别是在使用Pillow模块处理图片时。这个错误通常是由于文件
基于Python+Open CV的手势识别算法设计
在Python+Open CV的环境中,主要挑战在于熟练掌握Open CV库,特别是图像处理和分析的相关函数。2.


