写入文件然后在Python 3.6.2上读取它

时间:2017-08-17 09:14:15

标签: python file

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重新分配给它?

4 个答案:

答案 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()该文件。您无法同时读取和写入文件。这会导致不一致。