Respostas:
with open("test.txt", "a") as myfile:
myfile.write("appended text")
with open(file, "a")
método. Talvez eu seja antiquado, mas qual é a vantagem sobre #open(file, "a") ... file.close()
print("appended text", file=myfile)
também é possível, para uma API mais familiar.
Você precisa abrir o arquivo no modo de acréscimo, definindo "a" ou "ab" como o modo. Veja open () .
Quando você abre no modo "a", a posição de gravação estará sempre no final do arquivo (um anexo). Você pode abrir com "a +" para permitir a leitura, procurar para trás e ler (mas todas as gravações ainda estarão no final do arquivo!).
Exemplo:
>>> 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'
Nota : Usar 'a' não é o mesmo que abrir com 'w' e procurar o final do arquivo - considere o que pode acontecer se outro programa abrir o arquivo e começar a gravar entre a busca e a gravação. Em alguns sistemas operacionais, abrir o arquivo com 'a' garante que todas as suas gravações a seguir serão anexadas atomicamente ao final do arquivo (mesmo que o arquivo cresça com outras gravações).
Mais alguns detalhes sobre como o modo "a" opera ( testado apenas no Linux ). Mesmo se você procurar novamente, toda gravação será anexada ao final do arquivo:
>>> 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'
De fato, a página de fopen
manual declara:
A abertura de um arquivo no modo de acréscimo (a como o primeiro caractere do modo) faz com que todas as operações de gravação subseqüentes nesse fluxo ocorram no final do arquivo, como se preceda a chamada:
fseek(stream, 0, SEEK_END);
with
):Exemplo: ( em um programa real, use with
para fechar o arquivo - consulte a documentação )
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
Eu sempre faço isso,
f = open('filename.txt', 'a')
f.write("stuff")
f.close()
É simples, mas muito útil.
Você provavelmente deseja passar "a"
como argumento de modo. Veja os documentos para open () .
with open("foo", "a") as f:
f.write("cool beans...")
Existem outras permutações do argumento mode para atualização (+), truncamento (w) e binário (b), mas começar com just "a"
é a sua melhor aposta.
file
sombreia uma função interna. Não use para variáveis.
file
não é mais um componente do Python 3. Mesmo no Python 2, é usado muito raramente . Abrir um arquivo é uma operação comum. Não há problema em usar o file
nome aqui no Python 2 e 3. Saiba quando ser inconsistente.
O Python tem muitas variações dos três modos principais, esses três modos são:
'w' write text
'r' read text
'a' append text
Portanto, para anexar a um arquivo, é tão fácil quanto:
f = open('filename.txt', 'a')
f.write('whatever you want to write here (in append mode) here.')
Depois, existem os modos que apenas tornam seu código menos linhas:
'r+' read + write text
'w+' read + write text
'a+' append + read text
Finalmente, existem os modos de leitura / gravação em formato binário:
'rb' read binary
'wb' write binary
'ab' append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
quando usamos esta linha open(filename, "a")
, que a
indica o acréscimo do arquivo, isso significa permitir a inserção de dados extras no arquivo existente.
Você pode apenas usar as seguintes linhas para acrescentar o texto no seu arquivo
def FileSave(filename,content):
with open(filename, "a") as myfile:
myfile.write(content)
FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
Você também pode abrir o arquivo no r+
modo e, em seguida, definir a posição do arquivo no final do arquivo.
import os
with open('text.txt', 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Abrindo o arquivo em r+
modo vai deixar você escrever para outras posições de arquivo, além do fim, enquanto a
e a+
força de escrita até o fim.
se você deseja anexar a um arquivo
with open("test.txt", "a") as myfile:
myfile.write("append me")
Declaramos a variável myfile
para abrir um arquivo chamado test.txt
. Open recebe 2 argumentos, o arquivo que queremos abrir e uma string que representa os tipos de permissão ou operação que queremos fazer no arquivo
aqui estão as opções do modo de arquivo
Descrição do modo 'r' Este é o modo padrão. Abre arquivo para leitura. 'w' Este modo Abre o arquivo para gravação. Se o arquivo não existir, ele criará um novo arquivo. Se o arquivo existir, ele truncará o arquivo. 'x' Cria um novo arquivo. Se o arquivo já existir, a operação falhará. 'a' Abrir arquivo no modo de acréscimo. Se o arquivo não existir, ele criará um novo arquivo. 't' Este é o modo padrão. Abre no modo de texto. 'b' Isso abre no modo binário. '+' Isso abrirá um arquivo para leitura e gravação (atualização)
O 'a'
parâmetro significa modo de acréscimo. Se você não quiser usar with open
cada vez, poderá escrever facilmente uma função para fazer isso por você:
def append(txt='\nFunction Successfully Executed', file):
with open(file, 'a') as f:
f.write(txt)
Se você quiser escrever em outro lugar que não seja o final, use 'r+'
† :
import os
with open(file, 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Finalmente, o 'w+'
parâmetro concede ainda mais liberdade. Especificamente, ele permite que você crie o arquivo se ele não existir, além de esvaziar o conteúdo de um arquivo que existe atualmente.
A maneira mais simples de acrescentar mais texto ao final de um arquivo seria usar:
with open('/path/to/file', 'a+') as file:
file.write("Additions to file")
file.close()
O a+
na open(...)
instrução instrui a abrir o arquivo no modo de acréscimo e permite acesso de leitura e gravação.
Também é sempre uma boa prática usar file.close()
para fechar todos os arquivos que você abriu quando terminar de usá-los.
Aqui está o meu script, que basicamente conta o número de linhas, depois as anexa e as conta novamente para que você tenha provas de que funcionou.
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()