打开文件进行读/写,根据需要创建

MvG*_*MvG 8 python io file-io posix python-3.x

什么是打开文件的最优雅的方式

  • 如果文件不存在,则创建该文件,
  • 如果文件确实存在,则不会截断该文件
  • 可以写文件的任何部分(在搜索之后),而不仅仅是结束?

据我所知,open内置似乎并没有胜任这项任务:它提供了多种模式,但每一个我试图不能满足我的要求的至少一个:

  • r+ 如果文件不存在则失败.
  • w+ 将截断文件,丢失任何现有内容.
  • a+ 将强制所有写入到文件的末尾,至少在我的OS X上.

在打开文件之前检查存在感觉很糟糕,因为它为竞争条件留出了空间.同样适用于在异常处理程序中使用不同模式重试open.我希望有更好的方法.

Ign*_*ams 9

您需要使用os.open()在OS中的较低级别打开它而不是open()允许.特别是,通过os.RDWR | os.O_CREATflags应该做你想要什么.有关open(2)详细信息,请参见手册页.然后,您可以传递返回的FD以os.fdopen()从中获取文件对象.