用于创建+阅读+附加+二进制的文件模式

时间:2010-05-03 12:14:00

标签: python file-io

我需要打开一个文件进行读写。如果找不到该文件,则应该创建该文件。它也应该被视为Windows的二进制文件。你能告诉我我需要使用的文件模式序列吗?

我试过'r + ab'但是如果找不到它们就不会创建文件。

由于

2 个答案:

答案 0 :(得分:62)

模式为ab+隐含r且'a'和'('w'rite'+''r'ead)是多余的。由于CPython(即常规python)file基于C stdio FILE类型,因此这里是fopen(3)手册页中的相关行:

  • w +开放阅读和写作。 如果没有,则创建该文件 存在,否则被截断。 流位于 文件的开头。

  • a +打开阅读和追加(在文件末尾写)。 如果没有,则创建该文件 存在。初始文件位置 阅读是在开头 文件,但输出始终 附加到文件末尾。

加上“b”以使DOS开心。大概你想做这样的事情:

>>> f = open('junk', 'ab+')
>>> f
<open file 'junk', mode 'ab+' at 0xb77e6288>
>>> f.write('hello\n')
>>> f.seek(0, os.SEEK_SET)
>>> f.readline()
'hello\n'
>>> f.write('there\n')
>>> f.seek(0, os.SEEK_SET)
>>> f.readline()
'hello\n'
>>> f.readline()
'there\n'

答案 1 :(得分:8)

open("filename", "a+b")

应该有效。它以追加/更新模式打开二进制文件。