Arquivos de Texto - Python
Escrevendo em Arquivos de Texto
Para abrir um arquivo de texto para escrita, utilizamos os modos:
: abre para escrita e sobrescreve o conteúdo existente.w
: abre para escrita e adiciona novos dados ao final do arquivo.a
our+
: abre para leitura e escrita.w+
resulta em um error+
se o arquivo não existir, enquantoFileNotFoundError
cria o arquivo caso ele não exista ou o sobrescreve se já existir.w+
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
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
hello.txt
hello world hello work
Escrevendo Múltiplas Linhas
Para escrever várias linhas de uma vez, utilizamos o método writelines()
\n
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()
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
: lê uma linha do arquivo.readline()
: lê todo o conteúdo do arquivo em uma única string.read()
: lê todas as linhas e retorna uma lista de strings.readlines()
Exemplo de leitura linha a linha:
with open("hello.txt", "r") as file:
for line in file:
print(line, end="")
Nesse caso, readline()
end=""
print()
\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+
w+
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()
Movendo o Ponteiro
O método seek()
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.