target=open("test.txt",'w+')
target.write('ffff')
print(target.read())
当运行以下python脚本(test.txt是一个空文件)时,它会打印一个空字符串。
但是,重新打开文件时,它可以正常读取:
target=open("test.txt",'w+')
target.write('ffff')
target=open("test.txt",'r')
print(target.read())
这打印出' ffff'根据需要。
为什么会这样?是'目标'仍被认为没有内容,即使我在第2行更新了,我还要将test.txt重新分配给它?
答案 0 :(得分:5)
文件具有读/写位置。写入文件会将该位置放在书面文本的末尾;阅读从同一个位置开始。
使用seek
method:
with open("test.txt",'w+') as target:
target.write('ffff')
target.seek(0) # to the start again
print(target.read())
演示:
>>> with open("test.txt",'w+') as target:
... target.write('ffff')
... target.seek(0) # to the start again
... print(target.read())
...
4
0
ffff
这些数字是target.write()
和target.seek()
的返回值;它们是写的字符数和新的位置。
答案 1 :(得分:3)
无需关闭并重新打开它。你只需要在阅读之前回到文件的起点:
with open("test.txt",'w+') as f:
f.write('ffff')
f.seek(0)
print(f.read())
答案 2 :(得分:1)
尝试刷新,然后寻找文件的开头:
f = open(path, 'w+')
f.write('foo')
f.write('bar')
f.flush()
f.seek(0)
print(f.read())
答案 3 :(得分:0)
在阅读之前你必须close()
该文件。您无法同时读取和写入文件。这会导致不一致。