【问题标题】:How to open a file for reading and writing, create it if doesn't exist yet, and if it does, then without truncating it?如何打开文件进行读写,如果不存在则创建它,如果存在,则不截断它?
【发布时间】:2021-01-31 19:01:02
【问题描述】:
  • 如果我使用r+,则如果文件不存在,则不会创建该文件。
  • 如果我使用w+,文件将被截断。
  • 如果我使用a+,我只能追加而不是寻找预先存在的偏移量。

所以似乎不可能在一次调用 Python 内置函数 open 时做到这一点?我将需要使用多个调用并确保不会在两者之间引入竞争条件?

【问题讨论】:

  • 如果你使用a会怎样?
  • 您最好使用多个 open() 语句。几天前我有一些类似的问题。结合 if 进行存在性检查,它会很好地完成您的工作
  • 我连续使用了 2 和 open()

标签: python file-io operating-system race-condition


【解决方案1】:

带有一点低级帮助器:

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 ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-07
    • 2014-07-20
    • 2017-03-30
    • 2020-07-12
    • 1970-01-01
    • 2023-04-11
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多