PythonInput & Output de Arquivos

Input & Output de Arquivos

Ler e escrever arquivos é essencial para programas que precisam guardar informações entre execuções. Python torna essa tarefa muito simples.

Abrindo arquivos — open()

A função open() abre um arquivo e devolve um objeto que você pode ler ou escrever:

arquivo = open("dados.txt", "r")  # "r" = modo leitura
conteudo = arquivo.read()
arquivo.close()

print(conteudo)

⚠️ Importante: sempre feche o arquivo com close() depois de usar.

Modos de abertura

"r"   # Leitura (padrão). O arquivo precisa existir.
"w"   # Escrita. Cria ou sobrescreve o arquivo.
"a"   # Adicionar ao final. Cria se não existir.
"r+"  # Leitura e escrita. O arquivo precisa existir.

Lendo arquivos

arquivo = open("poema.txt", "r", encoding="utf-8")

# Ler tudo de uma vez
conteudo = arquivo.read()

# Ler linha por linha
linha = arquivo.readline()   # primeira linha
linha = arquivo.readline()   # segunda linha

# Lista com todas as linhas
linhas = arquivo.readlines()

arquivo.close()
# Jeito mais comum: iterar sobre o arquivo
arquivo = open("poema.txt", "r", encoding="utf-8")
for linha in arquivo:
    print(linha.strip())  # strip() remove a quebra de linha
arquivo.close()

Escrevendo em arquivos

arquivo = open("notas.txt", "w", encoding="utf-8")

# Escrever texto
arquivo.write("Linha 1\n")
arquivo.write("Linha 2\n")

# Escrever lista de linhas
linhas = ["Linha 3\n", "Linha 4\n"]
arquivo.writelines(linhas)

arquivo.close()

Cuidado: modo "w" sobrescreve o arquivo inteiro! Se quiser adicionar sem apagar, use "a".

O with — forma recomendada

Usar with garante que o arquivo será fechado automaticamente, mesmo se der erro:

# Leitura
with open("poema.txt", "r", encoding="utf-8") as arquivo:
    conteudo = arquivo.read()
    print(conteudo)
# Aqui o arquivo já foi fechado automaticamente

# Escrita
with open("notas.txt", "w", encoding="utf-8") as arquivo:
    arquivo.write("Esta é uma nota.\n")
# Fechado automaticamente

Dica: sempre use with open() — é mais seguro e mais limpo.

Trabalhando com CSV

CSV é o formato mais comum para dados tabulares. O módulo csv facilita o trabalho:

Lendo CSV

import csv

with open("pessoas.csv", "r", encoding="utf-8") as arquivo:
    leitor = csv.reader(arquivo)
    for linha in leitor:
        print(linha)  # ['Nome', 'Idade', 'Cidade']
                       # ['Ana', '25', 'SP']

Escrevendo CSV

import csv

dados = [
    ["Nome", "Idade", "Cidade"],
    ["Ana", "25", "São Paulo"],
    ["João", "30", "Rio de Janeiro"],
    ["Maria", "22", "Belo Horizonte"],
]

with open("pessoas.csv", "w", newline="", encoding="utf-8") as arquivo:
    escritor = csv.writer(arquivo)
    escritor.writerows(dados)

Exemplo prático — bloco de notas simples

def salvar_nota():
    texto = input("Digite sua nota: ")
    with open("minhas_notas.txt", "a", encoding="utf-8") as f:
        f.write(f"{texto}\n")
    print("Nota salva!")

def ler_notas():
    try:
        with open("minhas_notas.txt", "r", encoding="utf-8") as f:
            notas = f.read()
            print(notas if notas else "Nenhuma nota encontrada.")
    except FileNotFoundError:
        print("Nenhuma nota encontrada.")

while True:
    print("\n1 - Nova nota")
    print("2 - Ver notas")
    print("0 - Sair")
    opcao = input("Escolha: ")
    if opcao == "1":
        salvar_nota()
    elif opcao == "2":
        ler_notas()
    elif opcao == "0":
        break

Erros comuns

FileNotFoundError — arquivo não existe

arquivo = open("nao_existe.txt", "r")  # ❌ FileNotFoundError

Solução: verifique se o arquivo existe antes ou use try/except:

try:
    with open("dados.txt", "r") as f:
        conteudo = f.read()
except FileNotFoundError:
    print("Arquivo não encontrado.")

Esquecer de fechar o arquivo

f = open("dados.txt", "w")
f.write("Olá")
# esqueceu f.close() — arquivo pode ficar corrompido

Solução: use with open() que fecha automaticamente.

Sobrescrever sem querer

with open("dados.txt", "w") as f:  # "w" apaga tudo!
    f.write("Novo conteúdo")

Solução: use "a" para adicionar, ou verifique antes de sobrescrever.

Encoding errado

with open("dados.txt", "r") as f:  # sem encoding pode dar erro com acentos
    print(f.read())

Solução: sempre especifique encoding="utf-8" ao abrir arquivos de texto.

Resumo

OperaçãoCódigoDescrição
Abriropen("arquivo", "r")Abre arquivo
Ler tudoarquivo.read()Retorna string
Ler linhaarquivo.readline()Retorna uma linha
Escreverarquivo.write("texto")Escreve no arquivo
Fechararquivo.close()Fecha arquivo
Segurowith open() as f:Fecha automático
CSV lercsv.reader(f)Lê arquivo CSV
CSV escrevercsv.writer(f)Escreve arquivo CSV