Atualizado: 04/11/2024

Arquivos de Texto - 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+ ou w+: abre para leitura e escrita. r+ resulta em um erro FileNotFoundError se o arquivo não existir, enquanto w+ 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.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com