【发布时间】:2014-04-04 05:37:27
【问题描述】:
打开文件最优雅的方式是什么
- 如果文件不存在,则会创建该文件,
- 如果文件确实存在,则不会被截断并且
- 是否可以写入文件的任何部分(查找后),而不仅仅是结尾?
据我所知,the open builtin 似乎无法胜任这项任务:它提供了多种模式,但我尝试的每一种模式都无法满足我的至少一项要求:
-
如果文件不存在,
r+将失败。 -
w+将截断文件,丢失所有现有内容。 -
a+将强制所有写入到文件末尾,至少在我的 OS X 上是这样。
在打开文件之前检查是否存在感觉很糟糕,因为它为竞争条件留出了空间。这同样适用于在异常处理程序中以不同的模式重试打开。希望有更好的办法。
【问题讨论】:
-
如果你的目标是写到文件的中间,我怀疑有没有很干净的方法。
标签: python file-io python-3.x io posix