Trabalhando com Arquivos e Dados Externos em Python 🐍 Etapa 11

 Seja muito bem-vindo à Academy Code Christ!


🌍 Academy Code Christ está disponível em vários idiomas.
Fique à vontade para usar o tradutor na Barra lateral (Sidebar) e aprender no seu idioma.

Python 🐍 Etapa 11
Trabalhando com Arquivos 



📚 Continue sua jornada de aprendizado


A Academy Code Christ oferece trilhas de aprendizado em diferentes tecnologias. Explore os cursos, acompanhe as aulas e avance em sua jornada de conhecimento acessando os menus correspondentes:



💻 Pratique o que você aprende


🎯 Por que trabalhar com arquivos?

Até aqui, todos os programas executavam e encerravam sem manter “memória” do que ocorreu. 

Mas imagine um sistema bancário, uma biblioteca virtual ou um cadastro de clientes: toda informação precisa persistir além da execução do programa.

É aí que entra o manuseio de arquivos — você grava dados em disco e os lê quando precisar.

Python torna isso extremamente fácil, com comandos simples e claros, além de suporte nativo a diversos formatos, como:

●     🔹 TXT (texto simples)

●     🔹 CSV (planilhas simples)

●     🔹 JSON (dados estruturados)

●     🔹 Arquivos binários


Vamos começar com o básico: como abrir e manipular arquivos de texto.


Abrindo e lendo arquivos


Python oferece a função embutida open() para lidar com arquivos.

A sintaxe:

arquivo = open("dados.txt", "r")

conteudo = arquivo.read()

arquivo.close()

 

Parâmetros de open():


Modo

Descrição

"r"

leitura (read)

"w"

escrita (write) – substitui conteúdo existente

"a"

anexar (append) – adiciona sem apagar

"x"

cria novo arquivo (erro se já existir)

"b"

binário (ex: "rb" ou "wb")

"t"

texto (modo padrão)


Exemplo: lendo arquivo linha a linha


arquivo = open("nomes.txt", "r")

for linha in arquivo:

    print(linha.strip())  # strip remove \n

arquivo.close()

 

Se o arquivo tiver este conteúdo:

Ana

Bruno

Carla

 

A saída será:

Ana

Bruno

Carla

 

Escrevendo em arquivos (write)


Para criar ou sobrescrever um arquivo:

arquivo = open("teste.txt", "w")

arquivo.write("Olá, Python!\n")

arquivo.write("Gravando dados em arquivo.")

arquivo.close()

 

Ao abrir teste.txt, o conteúdo será:

Olá, Python!

Gravando dados em arquivo.

 

⚠️ Atenção: o modo "w" apaga todo o conteúdo anterior do arquivo.


Adicionando conteúdo (append)


Usando "a", novos dados são acrescentados:

arquivo = open("teste.txt", "a")

arquivo.write("\nNova linha adicionada.")

arquivo.close()

 

Agora o arquivo conterá a linha extra no final.


Usando o gerenciador de contexto with


Sempre que possível, use a forma moderna:

with open("dados.txt", "r") as arquivo:

    conteudo = arquivo.read()

    print(conteudo)

 

⚙️ O with fecha o arquivo automaticamente, mesmo se ocorrer erro.

É mais limpo, seguro e evita o esquecimento de arquivo.close().


Lendo arquivos grandes: .readline() e .readlines()

●     readline() → lê uma única linha.


●     readlines() → retorna uma lista com todas as linhas.


with open("nomes.txt") as arq:

    linhas = arq.readlines()

    print(f"Total: {len(linhas)} linhas") 


Escrevendo listas de forma eficiente


nomes = ["Ana\n", "Bruno\n", "Carla\n"]

with open("alunos.txt", "w") as f:

    f.writelines(nomes)

 

Ao abrir o arquivo, as linhas estarão formatadas corretamente.


Manipulando arquivos CSV (planilhas simples)


Arquivos CSV (Comma-Separated Values) são amplamente usados para troca de dados, como planilhas do Excel.

O Python possui o módulo csv para facilitar leitura e escrita.

import csv

 

with open("clientes.csv", "w", newline="") as csvfile:

    escritor = csv.writer(csvfile)

    escritor.writerow(["Nome", "Idade", "Cidade"])

    escritor.writerow(["Lucas", 25, "São Paulo"])

    escritor.writerow(["Marina", 30, "Curitiba"])

 

Agora o arquivo clientes.csv conterá:

Nome,Idade,Cidade

Lucas,25,São Paulo

Marina,30,Curitiba

 

Lendo o CSV:

with open("clientes.csv", "r") as csvfile:

    leitor = csv.reader(csvfile)

    for linha in leitor:

        print(linha)

 

Saída:

['Nome', 'Idade', 'Cidade']

['Lucas', '25', 'São Paulo']

['Marina', '30', 'Curitiba']

 


Usando o módulo json


JSON (JavaScript Object Notation) é o formato mais usado para troca de dados em APIs web.

Python possui suporte nativo com o módulo json.


Dicionário → JSON (salvar):

import json

 

dados = {

    "nome": "Carlos",

    "idade": 28,

    "enderecos": ["SP", "RJ"]

}

 

with open("dados.json", "w") as arq:

    json.dump(dados, arq, indent=4)

 

O arquivo dados.json conterá:

{

    "nome": "Carlos",

    "idade": 28,

    "enderecos": ["SP", "RJ"]

}

 

JSON → Dicionário (ler):


with open("dados.json", "r") as arq:

    conteudo = json.load(arq)

    print(conteudo["nome"])

 

Saída:

Carlos

 


Atualizando dados JSON


import json

 

with open("clientes.json", "r") as arq:

    clientes = json.load(arq)

 

clientes.append({"nome": "Ana", "idade": 23})

 

with open("clientes.json", "w") as arq:

    json.dump(clientes, arq, indent=4)

 

Dica: Sempre carregue, modifique e regrave o JSON — alterações diretas no arquivo são perigosas.


Trabalhando com caminhos de arquivos (os e pathlib)

O módulo os permite interagir com o sistema de arquivos:

import os

 

print("Diretório atual:", os.getcwd())

os.mkdir("novo_diretorio")

os.rename("teste.txt", "arquivo_antigo.txt")

 

O módulo pathlib é mais moderno e orientado a objetos:

from pathlib import Path

 

pasta = Path("documentos")

pasta.mkdir(exist_ok=True)

 

arquivo = pasta / "teste.txt"

arquivo.write_text("Olá, Pathlib!")

print(arquivo.read_text())

 


Tratando erros de arquivos


Erros são comuns: arquivos que não existem, permissões negadas, etc.

Use try/except:

try:

    with open("inexistente.txt") as f:

        print(f.read())

except FileNotFoundError:

    print("Arquivo não encontrado!")

except PermissionError:

    print("Sem permissão para ler.")

 


Criando logs de sistema


Gravar logs em arquivos é uma prática profissional.
 Podemos usar logging, módulo embutido no Python.

import logging

 

logging.basicConfig(

    filename="sistema.log",

    level=logging.INFO,

    format="%(asctime)s - %(message)s"

)

 

logging.info("Sistema iniciado")

logging.warning("Atenção: base de dados não encontrada")

 

O arquivo sistema.log guardará cada evento com data e hora.

Perfeito para monitorar aplicações reais.


Mini‑projeto prático: Registro de usuários


Vamos unir tudo o que aprendemos em um pequeno sistema de cadastro.

import json

from pathlib import Path

 

ARQUIVO = Path("usuarios.json")

 

# Cria arquivo vazio caso não exista

if not ARQUIVO.exists():

    with open(ARQUIVO, "w") as f:

        json.dump([], f)

 

def carregar_usuarios():

    with open(ARQUIVO, "r") as f:

        return json.load(f)

 

def salvar_usuarios(dados):

    with open(ARQUIVO, "w") as f:

        json.dump(dados, f, indent=4)

 

def cadastrar_usuario(nome, email):

    usuarios = carregar_usuarios()

    usuarios.append({"nome": nome, "email": email})

    salvar_usuarios(usuarios)

    print(f"Usuário {nome} cadastrado com sucesso!")

 

def listar_usuarios():

    usuarios = carregar_usuarios()

    if not usuarios:

        print("Nenhum usuário cadastrado.")

    else:

        for u in usuarios:

            print(f"- {u['nome']} ({u['email']})")

 

# --- Programa principal ---

while True:

    print("\n[1] Cadastrar  [2] Listar  [3] Sair")

    opcao = input("Escolha: ")

 

    if opcao == "1":

        nome = input("Nome: ")

        email = input("E-mail: ")

        cadastrar_usuario(nome, email)

    elif opcao == "2":

        listar_usuarios()

    elif opcao == "3":

        print("Saindo...")

        break

    else:

        print("Opção inválida.")

 

Saída simulada:

[1] Cadastrar  [2] Listar  [3] Sair

Escolha: 1

Nome: Ana

E-mail: [email protected]

Usuário Ana cadastrado com sucesso!

 

[1] Cadastrar  [2] Listar  [3] Sair

Escolha: 2

- Ana ([email protected])

 

O arquivo usuarios.json conterá:

[

    {

        "nome": "Ana",

        "email": "[email protected]"

    }

]

 

🎯 Você acabou de criar um sistema com persistência real, totalmente funcional e escalável!


Boas práticas na manipulação de arquivos


1.    Sempre use with open() — garante fechamento automático.

2.    Verifique a existência dos arquivos antes de ler.

3.    Utilize exceções para capturar erros.

4.    Mantenha backups ou logs antes de sobrescrever dados.

5.    Evite ler arquivos enormes de uma só vez — prefira leitura em blocos.

6.    Trabalhe com caminhos relativos e Pathlib para portabilidade entre SOs.


Resumo 


Nesta etapa, você aprendeu a:

 ✅ Criar, abrir, ler e escrever arquivos de texto.
 ✅ Acrescentar informações usando modo
"a".
 ✅ Utilizar
with para garantir segurança e elegância.
 ✅ Manipular formatos
CSV e JSON.
 ✅ Tratar erros e criar logs.
 ✅ Interagir com o sistema de arquivos (
os e pathlib).
 ✅ Construir um
mini‑projeto completo de cadastro persistente.


Agora você sabe armazenar e recuperar dados — um pilar central da programação em qualquer nível profissional.


🚀 Na próxima etapa, entraremos no fascinante mundo do tratamento e visualização de dados, onde aprenderemos a analisar informações e transformá‑las em insights usando Pandas e Matplotlib!



Este conteúdo faz parte do Academy Code Christ. 

Um projeto criado para ajudar jovens e iniciantes a aprender programação do zero, de forma simples e gratuita.

Nossa missão é compartilhar conhecimento e incentivar mais pessoas a descobrir que também podem aprender tecnologia, criar projetos e desenvolver novas habilidades.
Todo o conteúdo é disponibilizado gratuitamente, de forma clara, prática e 
sem enrolação. 

Você pode apoiar o projeto se quiser 
com um café. 



Post a Comment

Postagem Anterior Próxima Postagem