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