Python open()标志用于open或create



Python 3中打开

  • 如果不存在则创建
  • 不要截断
  • 二进制模式

我测试了r+b,但由于缺少文件而失败,w+b截断了它,而a+b似乎将所有写入变成了附加,而我需要覆盖一些数据。

这是C&蟒蛇没有办法通过open()做到这一点

Python的open()类似于C中的fopen() API,两者都不具备这种能力。

请注意,您发布的try/except方法具有竞赛条件
该文件可以在两次调用之间创建,突然间,您会用第二次调用截断它。

但是:您可以使用os.open()os.fdopen()实现您想要的:

fd = os.open(path, os.O_CREAT | os.O_RDWR | os.O_BINARY)
if fd != -1:
    f = os.fdopen(fd, 'r+b')  # Now use 'f' normally; it'll close `fd` itself

解决方法是捕获异常并用另一种模式打开。我仍然会接受一个更好的解决方案。

try:
    self.file = open(filename, "r+b")
except FileNotFoundError:
    self.file = open(filename, "w+b")

相关内容

  • 没有找到相关文章

最新更新