>>> with open('test1','wb') as f:
f.write('test')
>>> with open('test1','ab') as f:
f.write('koko')
>>> with open('test1','rb') as f:
f.read()
'testkoko'
>>> f = open('test','a+') # Not using 'with' just to simplify the example REPL session
>>> f.write('hi')
>>> f.seek(0)
>>> f.read()
'hi'
>>> f.seek(0)
>>> f.write('bye') # Will still append despite the seek(0)!
>>> f.seek(0)
>>> f.read()
'hibye'
你需要通过设置"a"或"ab"作为模式,以追加模式打开文件。参见open()。
当你用"a"模式打开时,写的位置将**总是在文件的末端(追加)。你可以用"a+"打开,以允许阅读,向后寻求和读取(但所有的写入仍然是在文件的末端!)。
例子。
注意。使用'a'与使用'w'打开并寻求文件的末尾不同--考虑一下如果其他程序打开文件并在寻求和写入之间开始写入会发生什么。在一些操作系统上,用'a'打开文件可以保证你所有的后续写操作都会被原子化地追加到文件的末尾(即使文件因其他写操作而增加)。
关于"a"模式如何操作的更多细节(仅在Linux上测试)。即使你往回找,每次写都会追加到文件的末尾。
事实上,
fopen
manpage指出。旧的简化答案(不使用
with
)。例子: (在真正的程序中使用
with
来关闭文件 - 见文档)你可能想传递
"a"
作为模式参数。 参见 open() 的文档。模式参数还有其他变化,如更新(+)、截断(w)和二进制(b)模式,但只用
"a"
是你最好的选择。