Вопрос-Ответ

How do I append to a file?

Как мне добавить в файл?

Как мне добавить в файл вместо его перезаписи?

Переведено автоматически
Ответ 1

Установите режим в open() на "a" (добавить) вместо "w" (записать):

with open("test.txt", "a") as myfile:
myfile.write("appended text")

В документации перечислены все доступные режимы.

Ответ 2

Вам нужно открыть файл в режиме добавления, установив "a" или "ab" в качестве режима. Смотрите open() .

При открытии в режиме "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 странице руководства указано:


Открытие файла в режиме добавления (a как первый символ mode) приводит к тому, что все последующие операции записи в этот поток выполняются в конце файла, как если бы они предшествовали вызову:


fseek(stream, 0, SEEK_END);


Старый упрощенный ответ (не используется with):

Пример: (в реальной программе используйте with для закрытия файла - см. Документацию)

>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
Ответ 3

I always do this,

f = open('filename.txt', 'a')
f.write("stuff")
f.close()

It's simple, but very useful.

Ответ 4

Python has many variations off of the main three modes, these three modes are:

'w'   write text
'r' read text
'a' append text

So to append to a file it's as easy as:

f = open('filename.txt', 'a') 
f.write('whatever you want to write here (in append mode) here.')

Then there are the modes that just make your code fewer lines:

'r+'  read + write text
'w+' read + write text
'a+' append + read text

Finally, there are the modes of reading/writing in binary format:

'rb'  read binary
'wb' write binary
'ab' append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
python file