如何打开文件进行读写,如果不存在则创建它,如果存在则不截断它?
How to open a file for reading and writing, create it if doesn't exist yet, and if it does, then without truncating it?
- 如果我使用
r+
,如果文件不存在,则不会创建该文件。
- 如果我使用
w+
,文件将被截断。
- 如果我使用
a+
,我只能追加而不是寻找预先存在的偏移量。
所以似乎不可能一次调用 Python 内置函数 open
就可以做到这一点?我将需要使用多个调用并确保不会在两者之间引入竞争条件?
有一点low-level帮手:
import os
def open_create(name, flags):
return os.open(name, flags | os.O_CREAT)
with open("./testfile", 'r+', opener=open_create) as f:
... read/write ...
- 如果我使用
r+
,如果文件不存在,则不会创建该文件。 - 如果我使用
w+
,文件将被截断。 - 如果我使用
a+
,我只能追加而不是寻找预先存在的偏移量。
所以似乎不可能一次调用 Python 内置函数 open
就可以做到这一点?我将需要使用多个调用并确保不会在两者之间引入竞争条件?
有一点low-level帮手:
import os
def open_create(name, flags):
return os.open(name, flags | os.O_CREAT)
with open("./testfile", 'r+', opener=open_create) as f:
... read/write ...