写入后读取文件,未关闭前

13 投票
3 回答
9750 浏览
提问于 2025-04-17 20:30

我想在一个最开始是空的文件里写入内容后,尝试读取这些内容,但在关闭文件之前这样做。请问在Python中可以实现吗?

with open("outfile1.txt", 'r+') as f:
    f.write("foobar")
    f.flush()
    print("File contents:", f.read())

使用 f.flush() 刷新文件似乎没有效果,因为最后调用 f.read() 还是返回空。

除了重新打开文件,还有其他方法可以读取文件中的“foobar”吗?

3 个回答

2

在读取文件之前,先回到文件的开头:

f.seek(0)
print f.read()
3

文件对象会记录当前在文件中的位置。你可以用 f.tell() 来查看当前位置,用 f.seek(position) 来设置新的位置。

如果你想从头开始读取文件,就需要把位置设置到开头,使用 f.seek(0)

http://docs.python.org/2/library/stdtypes.html#file.seek

14

你需要把文件对象的位置重置到最开始的地方,可以使用 seek() 这个方法:

with open("outfile1.txt", 'r+') as f:
    f.write("foobar")
    f.flush()

    # "reset" fd to the beginning of the file
    f.seek(0)
    print("File contents:", f.read())

这样就可以从文件中读取内容了。

撰写回答