您需要在附加模式下打开文件,方法是将“a”或“ab”设置为模式。见
使用“a”模式打开时,写入位置将始终位于文件末尾(附加)。您可以使用“a +”打开以允许读取,向后搜索和读取(但所有写入仍将在文件的末尾!)。
例:>>> 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'
注意:使用'a'与使用'w'打开并寻找文件末尾不同 - 考虑如果另一个程序打开文件并开始在搜索和写入之间写入可能会发生什么。在某些操作系统上,使用“a”打开文件可确保所有后续写入都将原子地附加到文件末尾(即使文件通过其他写入增长)。
关于“a”模式如何运作的更多细节(仅在Linux上测试)。即使你回头,每次写入都会附加到文件的末尾:
>>> 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'
实际上,fopen 联机帮助页指出:以附加模式打开文件(作为模式的第一个字符)会导致对此流的所有后续写入操作发生在文件结尾处,就像在调用之前一样:fseek(stream, 0, SEEK_END);
旧的简化答案(不使用with):
示例:( 在实际程序中用于with关闭文件 - 请参阅文档)
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'