如何同时打开一个文件进行读写?

381 投票
4 回答
471344 浏览
提问于 2025-04-16 21:15

有没有办法同时打开一个文件进行读和写呢?

我现在的做法是先打开文件进行写操作,写完后把文件关闭,然后再重新打开进行读操作。但有没有办法可以同时打开一个文件,既能读又能写呢?

4 个回答

53

r+ 是一种常用的模式,用来同时进行读取和写入操作。这和使用 fopen() 这个系统调用没有什么区别,因为 file() / open() 只是对这个操作系统调用的一个简单封装。

354

总结一下输入输出的行为:

模式 r r+ w w+ a a+
读取 可以 可以 不可以 可以 不可以 可以
写入 不可以 可以 可以 可以 可以 可以
创建 不可以 不可以 可以 可以 可以 可以
覆盖 不可以 不可以 可以 可以 不可以 不可以
从头开始 可以 可以 可以 可以 不可以 不可以
到结尾 不可以 不可以 不可以 不可以 可以 可以

上面表格的决策树:

445

下面是如何读取一个文件,然后写入数据(会覆盖掉原有的数据),而不需要关闭再重新打开文件的方法:

with open(filename, "r+") as f:
    data = f.read()
    f.seek(0)
    f.write(output)
    f.truncate()

撰写回答