Como gravar dados em arquivos de texto com Python

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.

Sobre Fábio dos Reis (1198 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

1 Trackbacks & Pingbacks

  1. Leitura e gravação em arquivos com Python - Lendo arquivos de texto - Bóson Treinamentos em Tecnologia

Escreva um comentário

Seu e-mail não será divulgado


*