Вот мой сценарий, который в основном подсчитывает количество строк, затем добавляет, а затем подсчитывает их снова, чтобы у вас было доказательство того, что это сработало.

ы добавляете файл вместо того, чтобы перезаписывать его? Есть ли специальная функция, которая добавляет в файл?

Ответы на вопрос(3)

Решение Вопроса
with open("test.txt", "a") as myfile:
    myfile.write("appended text")
 Thomas Ahle09 мар. 2014 г., 20:44
print("appended text", file=myfile) Также возможно, для более знакомого API.
 Dan30 июл. 2011 г., 00:44
Этот из учебника также может быть полезным.
 user201560112 июн. 2013 г., 18:33
Я заметил, что многие люди используютwith open(file, "a") метод. Я, возможно, старомоден, но в чем преимущество передopen(file, "a") ... file.close()
 Petter13 июн. 2013 г., 19:37
bluewoodtree: Преимущества аналогичны RAII в C ++. Если вы забудете close (), может пройти некоторое время, прежде чем файл будет фактически закрыт. Проще подумать о том, чтобы забыть об этом, когда код имеет несколько точек выхода, исключений и так далее.
 jfs29 дек. 2014 г., 02:56
@ Том: нет.open() не жесткоutf-8, Оно используетlocale.getpreferredencoding(False), Проходятencoding="utf-8" параметр явно, если известно, что файл использует кодировку utf-8.

установив «a» или «ab» в качестве режима. Видетьоткрытый().

Когда вы открываете в режиме «а», позиция записи будетвсегда быть в конце файла (приложение). Вы можете открыть с «+», чтобы разрешить чтение, поиск назад и чтение (но все записи все равно будут в конце файла!).

Пример:

>>> 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» гарантирует, что все последующие записи будут добавлены атомарно в конец файла (даже если файл увеличивается за счет других записей).

Еще несколько подробностей о том, как работает режим «а» (проверено только на 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'
 ambassallo12 июл. 2016 г., 11:29
используйте «test.txt» вместо «test», если вы пишете в текстовый файл в Windows.
 user50203916 янв. 2011 г., 17:25
так что я просто использую функцию file.write () и делаю файл a + / a + b?
 sinelaw03 апр. 2013 г., 16:07
@JonasStein, вы должны использоватьwith - видетьdocs.python.org/2/whatsnew/2.6.html#pep-343-the-with-statement
 Jonas Stein29 мар. 2013 г., 15:06
тебе не нуженclose()?

Я всегда так делаю,

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

Это просто, но очень полезно.

 Andrew Palmer26 июн. 2017 г., 20:08
@marsh Даже если вы передаетеf переменная для других функций, та же функция, которая открывает файл, должна его закрывать.with синтаксис является предпочтительным способом для достижения этой цели.
 marsh31 мая 2016 г., 22:23
@Tim Castelijns Приятно, что кто-то опубликовал альтернативу синтаксису with, который вы не всегда можете использовать, если вы используете переменную в нескольких местах.
 dell pk12 апр. 2015 г., 22:51
«а +» лучше, чем «а»
 Tim Castelijns01 февр. 2016 г., 23:14
Это менее просто, чем большинство ответов, опубликованных за пару лет до этого, и не более
 Sam Redway02 февр. 2015 г., 23:00
его немного приятнее и немного безопаснее писать: с open ('filename', 'a') как f: f.write ('stuff')

Ваш ответ на вопрос