Ответы:
with open("test.txt", "a") as myfile:
myfile.write("appended text")
with open(file, "a")
метод. Я , может быть старомодным, но то , что является преимуществом по сравнениюopen(file, "a") ... file.close()
print("appended text", file=myfile)
Также возможно, для более знакомого API.
Вам нужно открыть файл в режиме добавления, установив «a» или «ab» в качестве режима. Смотри open () .
Когда вы открываете в режиме «а», позиция записи всегда будет в конце файла (добавление). Вы можете открыть с «+», чтобы разрешить чтение, поиск назад и чтение (но все записи все равно будут в конце файла!).
Пример:
>>> 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'
Я всегда так делаю,
f = open('filename.txt', 'a')
f.write("stuff")
f.close()
Это просто, но очень полезно.
Вы, вероятно, хотите передать "a"
в качестве аргумента режима. Смотрите документы для open () .
with open("foo", "a") as f:
f.write("cool beans...")
Существуют и другие варианты аргумента mode для обновления (+), усечения (w) и бинарного (b) режима, но "a"
лучше всего начинать с just .
file
Затеняет встроенную функцию. Не используйте это для переменных.
file
больше не является встроенным в Python 3. Даже в Python 2 он используется очень редко . Открытие файла является обычной операцией. Можно использовать file
имя здесь и на Python 2, и на 3. Знайте, когда нужно быть непоследовательным.
В Python есть много вариантов основных трех режимов, эти три режима:
'w' write text
'r' read text
'a' append text
Чтобы добавить в файл это так же просто, как:
f = open('filename.txt', 'a')
f.write('whatever you want to write here (in append mode) here.')
Тогда есть режимы, которые просто делают ваш код меньше строк:
'r+' read + write text
'w+' read + write text
'a+' append + read text
Наконец, существуют режимы чтения / записи в двоичном формате:
'rb' read binary
'wb' write binary
'ab' append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
когда мы используем эту строку open(filename, "a")
, это a
указывает на добавление файла, это означает, что позволяет вставлять дополнительные данные в существующий файл.
Вы можете просто использовать следующие строки, чтобы добавить текст в ваш файл
def FileSave(filename,content):
with open(filename, "a") as myfile:
myfile.write(content)
FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
Вы также можете открыть файл в r+
режиме, а затем установить положение файла в конец файла.
import os
with open('text.txt', 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Открытие файла в r+
режиме позволит вам записать в другие позиции файла, кроме конца, a
и a+
принудительно записать в конец.
если вы хотите добавить в файл
with open("test.txt", "a") as myfile:
myfile.write("append me")
Мы объявили переменную, myfile
чтобы открыть файл с именем test.txt
. Open принимает 2 аргумента: файл, который мы хотим открыть, и строку, представляющую виды разрешений или операций, которые мы хотим выполнить над файлом
здесь есть параметры режима файла
Описание режима 'r' Это режим по умолчанию. Открывает файл для чтения. 'w' Этот режим открывает файл для записи. Если файл не существует, он создает новый файл. Если файл существует, он усекает файл. 'x' Создает новый файл. Если файл уже существует, операция не выполняется. 'a' Открыть файл в режиме добавления. Если файл не существует, он создает новый файл. 't' Это режим по умолчанию. Он открывается в текстовом режиме. 'b' Это открывается в двоичном режиме. '+' Это откроет файл для чтения и записи (обновление)
В 'a'
Значит параметров режима добавления. Если вы не хотите использовать with open
каждый раз, вы можете легко написать функцию, которая сделает это за вас:
def append(txt='\nFunction Successfully Executed', file):
with open(file, 'a') as f:
f.write(txt)
Если вы хотите написать в другом месте, кроме конца, вы можете использовать 'r+'
† :
import os
with open(file, 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Наконец, 'w+'
параметр предоставляет еще больше свободы. В частности, он позволяет вам создать файл, если он не существует, а также очистить содержимое файла, который существует в настоящее время.
Самый простой способ добавить больше текста в конец файла - использовать:
with open('/path/to/file', 'a+') as file:
file.write("Additions to file")
file.close()
Оператор a+
in open(...)
указывает открыть файл в режиме добавления и разрешить чтение и запись.
Также всегда полезно использовать file.close()
для закрытия любых файлов, которые вы открыли, как только вы закончите с ними.
Вот мой сценарий, который в основном подсчитывает количество строк, затем добавляет, а затем подсчитывает их снова, чтобы у вас было доказательство того, что это сработало.
shortPath = "../file_to_be_appended"
short = open(shortPath, 'r')
## this counts how many line are originally in the file:
long_path = "../file_to_be_appended_to"
long = open(long_path, 'r')
for i,l in enumerate(long):
pass
print "%s has %i lines initially" %(long_path,i)
long.close()
long = open(long_path, 'a') ## now open long file to append
l = True ## will be a line
c = 0 ## count the number of lines you write
while l:
try:
l = short.next() ## when you run out of lines, this breaks and the except statement is run
c += 1
long.write(l)
except:
l = None
long.close()
print "Done!, wrote %s lines" %c
## finally, count how many lines are left.
long = open(long_path, 'r')
for i,l in enumerate(long):
pass
print "%s has %i lines after appending new lines" %(long_path, i)
long.close()