Gravar dados em arquivos de texto com Python
Na lição anterior mostramos como abrir um arquivo de texto para leitura com Python. Agora, vamos mostrar os métodos e modos utilizados para que seja possível escrever dentro desses arquivos.
Como escrever em um arquivo
Para escrever texto em um arquivo, ajustamos o modo de abertura do arquivo de acordo e usamos o método write() do objeto file, que recebe como argumento o texto a ser inserido no arquivo.
Sintaxe do método write()
arquivo.write(texto_a_ser_inserido)
Veja o exemplo a seguir, usando o modo w:
with open('arq01.txt', 'w') as arquivo:
arquivo.write('Texto adicionado à primeira linha.\n')
arquivo.write('Texto que vai na segunda linha.\n')
with open('arq01.txt') as arquivo:
print(arq01.read())
Um ponto importante a ser lembrado é de que o método write() não acrescenta o caractere de newline automaticamente, por isso precisamos fornecê-lo junto com o texto (\n).
No exemplo seguinte, escrevemos no arquivo de texto, mas sem utilizar a declaração with. Neste caso, devemos nos lembrar de fechar o arquivo por meio do método close():
# Criando e escrevendo em arquivos de texto (modo 'w'). arquivo = open('arq01.txt','w') arquivo.write("Bóson Treinamentos\n") arquivo.write("Criando um arquivo de texto com Python\n") arquivo.write("Arquivo criado por Fábio dos Reis\n") arquivo.write("É isso ai pessoal!\n") arquivo.close() # Lendo o arquivo criado: arquivo = open('arq01.txt','r') for linha in arquivo: linha = linha.rstrip() print (linha) arquivo.close()
Acrescentando texto a um arquivo existente
Caso o método write() seja invocado sobre um arquivo que foi aberto pelo método ‘w’, o conteúdo do arquivo será substituído pelo novo conteúdo fornecido ao método, pois o método write() primeiramente trunca o arquivo (apaga todo o soeu conteúdo), e só então permite a gravação de texto novo. Ou seja, ele sobrescreve o conteúdo do arquivo.
Para preservar o conteúdo existente no arquivo, devemos abri-lo usando o modo ‘a’ (append), que permite acrescentar texto novo ao final do arquivo, sem apagar o conteúdo já existente. Veja o exemplo a seguir:
# Acrescentando texto ao arquivo criado, usando o modo de acesso 'a' print("\n") texto = input("Digite uma frase para acrescentar ao arquivo:\n") arquivo = open('arq01.txt','a') arquivo.write(texto + "\n") print("Operação concluída no arquivo " + arquivo.name + " usando o modo de acesso " + arquivo.mode) arquivo.close() print("\nTexto alterado:") arquivo = open('arq01.txt','r') for linha in arquivo: linha = linha.rstrip() print (linha) arquivo.close()
Note que a frase digitada pelo usuário é acrescentada ao final do arquivo, preservando o conteúdo anterior.
Também podemos inserir texto no início do arquivo, usando o modo de acesso combinado r+., como mostra o exemplo a seguir:
# Acrescentando texto ao início do arquivo, usando o modo 'r+' print("\n") texto = input("Digite um titulo para acrescentar ao arquivo:\n") arquivo = open('arq01.txt','r+') arquivo.seek(0) arquivo.write(texto + '\n') arquivo.close() print("\nTexto alterado:") arquivo = open('arq01.txt','r') for linha in arquivo: linha = linha.rstrip() print (linha) arquivo.close()
Porém, nesse caso, o texto acrescentado irá substituir caracteres no início do texto, em vez de “empurrar” o texto existente para baixo. Veremos como sanar esse problema em outra lição.
Na próxima lição vamos falar sobre arquivos binários.