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

Mih*_*ian 38 python file-io

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

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

谢谢

msw*_*msw 63

该模式是ab+r是隐含的,"a'ppend和(" 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'
Run Code Online (Sandbox Code Playgroud)

  • 作品.还要感谢您在示例中指出os.SEEK_SET.我想我之前尝试使用+打开文件,但无法读取任何内容.我没想到流被放在文件的末尾...... (2认同)

Tim*_*ker 8

open("filename", "a+b")
Run Code Online (Sandbox Code Playgroud)

应该管用.它以追加/更新模式打开二进制文件.