打开文件作为读/写(如果存在)或不存在的最佳方法是什么,然后创建它并将其作为读/写打开?从我读到的, file = open('myfile.dat', 'rw')
应该这样做,对吧?
它对我不起作用(Python 2.6.2),我想知道它是否是版本问题,或者不应该像那样或者什么工作 .
最重要的是,我只需要解决问题的方法 . 我很好奇其他的东西,但我需要的是一个很好的方式来做开场部分 .
更新:封闭目录可由用户和组写入,而不是其他(我在Linux系统上...所以权限775换句话说),确切的错误是:
IOError:没有这样的文件或目录 .
16 回答
好的做法是使用以下内容:
所以你想把数据写入文件,但只有它还不存在?
通过使用鲜为人知的x模式来打开()而不是通常的w模式,可以很容易地解决这个问题 . 例如:
如果文件是二进制模式,请使用mode xb而不是xt .
我认为这是r,而不是rw . 我'm just a starter, and that'是我在文档中看到的 .
r表示读/写
例:
我希望这有帮助 . [仅供参考使用python版本3.6.2
open('myfile.dat', 'a')
适合我,很好 .在py3k你的代码引发
ValueError
:在python-2.6中它引发了
IOError
.使用:
确保在打开文件后关闭它们 .
with
上下文管理器将为您执行此操作 .从python 3.4开始,你应该使用
pathlib
到"touch"文件 .它比这个帖子中提出的解决方案更优雅 .
目录也一样:
将W写入文件,截断(如果存在),r读取文件,创建一个(如果不存在但不写入(并返回null))或创建新文件或附加到现有文件 .
以下方法的优点是文件 properly closed 在块's end, even if an exception is raised on the way. It' s相当于
try-finally
,但更短 .seek() method设置文件的当前位置 .
我的答案:
你想用文件做什么?只写入它或同时读写?
'w','a'将允许写入,如果文件不存在,将创建该文件 .
如果需要从文件中读取,则必须在打开文件之前存在该文件 . 您可以在打开它之前测试它的存在或使用try / except .
将“rw”改为“w”
或使用'a'进行追加(不删除现有内容)
你应该使用
open
与w+
模式:如果你想打开它来读写,我假设你不想在打开它时截断它,你希望能够在打开文件后立即读取它 . 所以这是我正在使用的解决方案: