Arquivos de Texto em Python
Escrevendo em Arquivos de Texto
Para abrir um arquivo de texto para escrita, utilizamos os modos:
w
: abre para escrita e sobrescreve o conteúdo existente.a
: abre para escrita e adiciona novos dados ao final do arquivo.r+
ouw+
: abre para leitura e escrita.r+
resulta em um erroFileNotFoundError
se o arquivo não existir, enquantow+
cria o arquivo caso ele não exista ou o sobrescreve se já existir.
Vamos ver um exemplo de como escrever em um arquivo de texto:
with open("hello.txt", "w") as file:
file.write("hello world")
print("Arquivo criado com sucesso!")
Ao executar este código, o arquivo hello.txt
será criado (ou sobrescrito) no diretório atual e poderá ser aberto em qualquer editor de texto para verificação.
Para adicionar uma nova linha ao conteúdo do arquivo:
with open("hello.txt", "a") as file:
file.write("\nhello work")
print("Arquivo modificado")
O código acima adiciona uma nova linha ao final do conteúdo existente. O caractere \n
é utilizado para iniciar uma nova linha no arquivo. O conteúdo do arquivo hello.txt
ficará assim:
hello world hello work
Escrevendo Múltiplas Linhas
Para escrever várias linhas de uma vez, utilizamos o método writelines()
, que recebe uma lista de strings. Cada string da lista precisa terminar com \n
para que seja escrita em uma nova linha.
lines = ["Hello Word\n", "Hello Work\n", "Hello World\n"]
with open("hello2.txt", "a") as file:
file.writelines(lines)
print("Lista de linhas escrita com sucesso!")
Também é possível usar o método print()
para gravar dados em um arquivo, especificando o argumento file
:
with open("hello.txt", "a") as myfile:
print("\nhello www.programicio.com", file=myfile)
Leitura de Arquivo
Para ler o conteúdo de um arquivo, abrimos o arquivo em modo de leitura r
. Existem três métodos principais para extrair o conteúdo:
readline()
: lê uma linha do arquivo.read()
: lê todo o conteúdo do arquivo em uma única string.readlines()
: lê todas as linhas e retorna uma lista de strings.
Exemplo de leitura linha a linha:
with open("hello.txt", "r") as file:
for line in file:
print(line, end="")
Nesse caso, readline()
é chamado automaticamente ao iterar sobre o arquivo. O parâmetro end=""
evita que print()
adicione uma linha extra entre as linhas já terminadas com \n
.
Para ler o arquivo inteiro de uma vez:
with open("hello.txt", "r") as file:
content = file.read()
print(content)
Para ler tudo como uma lista de strings:
with open("hello.txt", "r") as file:
contents = file.readlines()
print(contents)
Caso o arquivo tenha uma codificação específica, podemos defini-la com o argumento encoding
:
with open("hello.txt", encoding="utf8") as file:
text = file.read()
Leitura e Escrita Simultâneas
Para abrir um arquivo para leitura e escrita ao mesmo tempo, usamos os modos r+
ou w+
. Exemplo de escrita e leitura:
with open("hello.txt", "w+") as file:
file.write("Hello world\nHello work\n")
file.seek(0)
content = file.read()
print(content)
O método seek()
reposiciona o ponteiro para o início do arquivo após a gravação.
Movendo o Ponteiro
O método seek()
permite reposicionar o ponteiro de leitura/escrita no arquivo. Para retornar ao início, usamos seek(0)
:
file.seek(0)
Podemos também mover para uma posição específica no arquivo:
with open("hello.txt", "w+") as file:
file.write("Hello world\n")
file.seek(6)
content = file.read()
print(content) # Saída: "world"
Exemplo Prático: Gravação e Leitura Interativas
Abaixo, um exemplo de script que grava mensagens fornecidas pelo usuário e permite sua leitura:
FILENAME = "messages.txt"
def write():
message = input("Digite uma mensagem: ")
with open(FILENAME, "a") as file:
file.write(message + "\n")
def read():
with open(FILENAME, "r") as file:
for message in file:
print(message, end="")
print() # Linha em branco para separar o menu da saída
while True:
selection = int(input("1. Gravar no arquivo\t2. Ler o arquivo\t3. Sair\nEscolha uma opção: "))
match selection:
case 1:
write()
case 2:
read()
case 3:
break
case _:
print("Entrada inválida")
print("Programa encerrado")
Exemplo de execução:
1. Gravar no arquivo 2. Ler o arquivo 3. Sair Escolha uma opção: 1 Digite uma mensagem: Olá, mundo! 1. Gravar no arquivo 2. Ler o arquivo 3. Sair Escolha uma opção: 2 Olá, mundo! 1. Gravar no arquivo 2. Ler o arquivo 3. Sair Escolha uma opção: 3 Programa encerrado
O script acima permite ao usuário gravar mensagens em um arquivo e lê-las posteriormente. O menu é exibido até que o usuário escolha a opção de sair.
Documentação oficial: