马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#test.txt内容
123
456
789
代码如下:f = open('test.txt', 'r+')
print(f.tell(), end = ' ')
f.write('000\n')
print(f.tell(), end = ' ')
f.readline()
print(f.tell(), end = ' ')
f.write('999')
print(f.tell(), end = ' ')
f.close()
输出结果是
0 5 10 16
而test.txt也被修改为了
000
456
789999
但是代码如果改成(仅仅是把write和readline之间的f.tell()去掉了,结果就大相径庭f = open('test.txt', 'r+')
print(f.tell(), end = ' ')
f.write('000\n')
f.readline()
print(f.tell(), end = ' ')
f.write('999')
print(f.tell(), end = ' ')
f.close()
输出结果是0 10 21
而text.txt居然被修改成了
123
456
789000
999
请问各位大神这是什么情况?为什么连第一个write()写的内容都被添加到文件末尾了?
可能在改写文件的时候读取会导致一些未知的问题(估计和指针有关系),所以建议改写文本文件用只读方式打开文件读取内容,改写之后写入到新建的文件里,然后删除老文件,把新文件改名为老文件名这种方式。如果只需要新增内容,用a模式打开文件,在文件尾写入新内容,象日志文件、记录文件可以用这种方式。
|