Вам необходимо открыть файл в режиме добавления, установив «a» или «ab» в качестве режима.См. open () .
Когда вы открываете в режиме «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» и поиск в конце файла - подумайте, что может произойти, если другая программа откроет файл и начнет запись между поиском и записью.В некоторых операционных системах открытие файла с помощью «а» гарантирует, что все последующие записи будут добавлены атомарно в конец файла (даже если файл увеличивается за счет других операций записи).
Несколькоподробнее о том, как работает режим «а» ( протестировано только в 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
manpage сообщает:
Открытие файла в режиме добавления (в качестве первого символа режима) приводит к тому, что все последующие операции записи в этот поток происходят в конце файла, как если бы он предшествовал вызову:
fseek(stream, 0, SEEK_END);
Старый упрощенный ответ (без использования with
):
Пример: ( в реальной программе используйте with
, чтобы закрыть файл - см. документация )
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'