file-io - Python打开文件,如果不存在创建文件

以读写方式将文件打开(如果不存在,则创建该文件并以读写方式打开)哪种方式最好?file = open('myfile.dat', 'rw')

IOError : no such file or directory .

时间:


with open("file.dat","a+") as f:
 f.write(...)
 ...

a 为追加和读取打开一个文件,文件指针位于文件的末尾,如果文件存在的话,文件在追加模式下打开,如果该文件不存在,则为读取和写入创建一个新文件,-python文件模式

seek ()方法设置文件当前位置。


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+"字符;


>>> import os
>>> if os.path.exists("myfile.dat"):
... f = file("myfile.dat","r+")
... else:
... f = file("myfile.dat","w")

r+表示读写

open('myfile.dat','a')可以工作的很好。

在py3k中,代码引发ValueError


>>> open('myfile.dat', 'rw')
Traceback (most recent call last):
 File"<pyshell#34>", line 1, in <module>
 open('myfile.dat', 'rw')
ValueError: must have exactly one of read/write/append mode

在python-2.6中,它引发IOError

使用:


import os

f_loc = r"C:UsersRussellDesktopip_addr.txt"

if not os.path.exists(f_loc):
 open(f_loc, 'w').close()

with open(f_loc) as f:
 #Do stuff

打开文件后一定要关闭这些文件,with上下文管理器为你执行这个操作。

好的实践是使用以下方法:


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')

...