首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果文件不存在,Python中的open()不会创建文件

如果文件不存在,Python中的open()不会创建文件
EN

Stack Overflow用户
提问于 2010-06-03 23:05:54
回答 17查看 1M关注 0票数 796

如果文件存在,则以读/写方式打开文件的最佳方式是什么?如果不存在,则创建文件并以读/写方式打开文件?据我所知,file = open('myfile.dat', 'rw')应该这样做,对吧?

它不适用于我(Python 2.6.2),我想知道这是不是版本问题,或者不应该像那样工作,或者什么。

底线是,我只需要一个问题的解决方案。我对其他东西很好奇,但我需要的是一种很好的方式来完成开头的部分。

封闭的目录可由用户和组写入,但不能由其他用户写入(我在Linux系统上...换句话说,权限是775 ),确切的错误是:

IOError:没有这样的文件或目录。

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2010-06-03 23:12:40

您应该在w+模式下使用open

代码语言:javascript
复制
file = open('myfile.dat', 'w+')
票数 964
EN

Stack Overflow用户

发布于 2013-03-12 19:06:49

以下方法的优点是,即使在过程中引发异常,也可以在块的末尾正确关闭文件()。它等同于try-finally,但短得多。

代码语言:javascript
复制
with open("file.dat","a+") as f:
    f.write(...)
    ...

a+将打开一个文件以供追加和读取。如果文件存在,则文件指针位于文件的末尾。文件将在追加模式下打开。如果该文件不存在,它将创建一个新文件进行读写。-Python file modes

seek() method设置文件的当前位置。

代码语言:javascript
复制
f.seek(pos [, (0|1|2)])
pos .. position of the r/w pointer
[] .. optionally
() .. one of ->
  0 .. absolute position
  1 .. relative position to current
  2 .. relative position from end

只允许"rwab+“字符;必须恰好有一个"rwa”-请参阅堆栈溢出问题。

票数 171
EN

Stack Overflow用户

发布于 2015-05-04 09:49:43

最好的做法是使用以下代码:

代码语言:javascript
复制
import os

writepath = 'some/path/to/file.txt'

mode = 'a' if os.path.exists(writepath) else 'w'
with open(writepath, mode) as f:
    f.write('Hello, world!\n')
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2967194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档