【发布时间】:2010-05-03 12:13:59
【问题描述】:
我需要打开一个文件进行读写。如果未找到该文件,则应创建该文件。它也应该被视为 Windows 的二进制文件。你能告诉我我需要使用的文件模式序列吗?
我尝试了“r+ab”,但如果找不到文件,则不会创建文件。
谢谢
【问题讨论】:
我需要打开一个文件进行读写。如果未找到该文件,则应创建该文件。它也应该被视为 Windows 的二进制文件。你能告诉我我需要使用的文件模式序列吗?
我尝试了“r+ab”,但如果找不到文件,则不会创建文件。
谢谢
【问题讨论】:
模式是ab+ r 是隐含的,'a' append 和 ('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'
【讨论】:
open("filename", "a+b")
应该可以。它以追加/更新模式打开一个二进制文件。
【讨论】: