← Voltar ao blog Programação

Como Automatizar Tarefas Repetitivas com Python

Automação com Python Programação

Quase todo mundo tem uma tarefa repetitiva no trabalho: renomear dezenas de arquivos, copiar dados de uma planilha para outra, gerar o mesmo relatório toda segunda-feira ou organizar a pasta de downloads. São atividades que consomem tempo, causam erros por distração e poderiam ser feitas por um computador em segundos. Python é uma das melhores linguagens para isso, por ser simples de ler e ter bibliotecas prontas para praticamente tudo. Neste artigo, vou mostrar exemplos práticos que você pode adaptar para a sua rotina.

Por que Python para automação?

  • Sintaxe simples: o código é próximo da linguagem natural, o que facilita para quem não é programador profissional.
  • Bibliotecas para tudo: planilhas, PDFs, e-mails, navegadores, APIs, imagens e muito mais.
  • Multiplataforma: o mesmo script funciona no Windows, macOS e Linux.
  • Comunidade enorme: praticamente qualquer dúvida já foi respondida em fóruns e documentações.

Preparando o ambiente

Baixe o Python no site oficial (python.org). No Windows, marque a opção "Add Python to PATH" durante a instalação. Para instalar bibliotecas, use o gerenciador de pacotes pip no terminal. Uma boa prática é criar um ambiente virtual para cada projeto:

python -m venv venv
# Windows
venv\Scripts\activate
# macOS / Linux
source venv/bin/activate

Exemplo 1: organizar a pasta de downloads

Este script move os arquivos da pasta de downloads para subpastas de acordo com o tipo:

from pathlib import Path
import shutil

pasta = Path.home() / "Downloads"
categorias = {
    "Imagens": [".jpg", ".jpeg", ".png", ".gif", ".webp"],
    "Documentos": [".pdf", ".docx", ".txt", ".xlsx", ".pptx"],
    "Compactados": [".zip", ".rar", ".7z"],
    "Instaladores": [".exe", ".msi"],
}

for arquivo in pasta.iterdir():
    if not arquivo.is_file():
        continue
    for nome_pasta, extensoes in categorias.items():
        if arquivo.suffix.lower() in extensoes:
            destino = pasta / nome_pasta
            destino.mkdir(exist_ok=True)
            shutil.move(str(arquivo), destino / arquivo.name)
            break

A biblioteca pathlib, que já vem com o Python, torna a manipulação de caminhos simples e funciona em qualquer sistema operacional.

Exemplo 2: renomear arquivos em lote

Imagine que você tem centenas de fotos com nomes como "IMG_4821.jpg" e quer renomeá-las para "viagem_001.jpg", "viagem_002.jpg" e assim por diante:

from pathlib import Path

pasta = Path("C:/Fotos/Viagem")
fotos = sorted(pasta.glob("*.jpg"))

for i, foto in enumerate(fotos, start=1):
    novo_nome = f"viagem_{i:03d}{foto.suffix}"
    foto.rename(pasta / novo_nome)
    print(f"{foto.name} -> {novo_nome}")

Dica importante: antes de rodar scripts que alteram ou movem arquivos, teste em uma cópia da pasta. Uma alternativa é primeiro só imprimir o que seria feito e, depois de conferir, executar de verdade.

Exemplo 3: processar planilhas com pandas

A biblioteca pandas é a ferramenta mais popular para trabalhar com dados tabulares. Com ela, você lê planilhas, filtra, agrupa e gera novos arquivos com poucas linhas. Instale com:

pip install pandas openpyxl

Suponha uma planilha de vendas com as colunas Data, Vendedor, Produto e Valor. Para gerar um resumo do total vendido por vendedor:

import pandas as pd

vendas = pd.read_excel("vendas.xlsx")

resumo = (
    vendas.groupby("Vendedor")["Valor"]
    .agg(["count", "sum"])
    .rename(columns={"count": "Qtd. Vendas", "sum": "Total"})
    .sort_values("Total", ascending=False)
)

resumo.to_excel("resumo_vendedores.xlsx")
print(resumo)

Também é fácil juntar várias planilhas em uma só, algo muito comum quando cada filial ou mês tem seu próprio arquivo:

from pathlib import Path
import pandas as pd

arquivos = Path("relatorios").glob("*.xlsx")
consolidado = pd.concat([pd.read_excel(a) for a in arquivos], ignore_index=True)
consolidado.to_excel("consolidado.xlsx", index=False)

Exemplo 4: enviar e-mails automaticamente

O Python tem bibliotecas nativas para envio de e-mails. Este exemplo envia uma mensagem com anexo usando SMTP:

import os
import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg["Subject"] = "Relatório semanal"
msg["From"] = "[email protected]"
msg["To"] = "[email protected]"
msg.set_content("Olá! Segue em anexo o relatório da semana.")

with open("resumo_vendedores.xlsx", "rb") as f:
    msg.add_attachment(f.read(), maintype="application",
                       subtype="octet-stream", filename="resumo.xlsx")

with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
    smtp.login("[email protected]", os.environ["EMAIL_PASS"])
    smtp.send_message(msg)

Repare que a senha é lida de uma variável de ambiente, e não escrita no código. Nunca coloque senhas diretamente nos scripts, principalmente se eles forem compartilhados ou enviados para o GitHub. No Gmail, use uma "senha de app" em vez da sua senha principal.

Exemplo 5: consumir dados de uma API

Com a biblioteca requests, buscar dados na internet é simples. Por exemplo, consultar um endereço a partir do CEP usando a API pública ViaCEP:

import requests

cep = "01001000"
resposta = requests.get(f"https://viacep.com.br/ws/{cep}/json/", timeout=10)
resposta.raise_for_status()
dados = resposta.json()
print(dados["logradouro"], "-", dados["localidade"], "/", dados["uf"])

Combinando isso com o pandas, você poderia, por exemplo, completar automaticamente os endereços de uma planilha inteira de clientes.

Outras bibliotecas úteis

  • openpyxl: manipular arquivos Excel com formatação, fórmulas e estilos.
  • pypdf: juntar, dividir e extrair texto de PDFs.
  • Pillow: redimensionar, converter e editar imagens em lote.
  • Playwright e Selenium: automatizar ações em navegadores, como preencher formulários.
  • schedule: agendar a execução de funções dentro do próprio script.

Agendando a execução

Uma automação de verdade roda sozinha. Para executar scripts em horários definidos:

  • Windows: use o Agendador de Tarefas, configurando o programa python.exe e o caminho do script como argumento.
  • Linux e macOS: use o cron. Por exemplo, para rodar toda segunda-feira às 8h: 0 8 * * 1 /usr/bin/python3 /caminho/relatorio.py.

Boas práticas

  • Comece pequeno: automatize uma tarefa simples e vá evoluindo.
  • Registre o que o script faz com mensagens de log, para saber o que aconteceu caso algo dê errado.
  • Trate erros: arquivos podem não existir e a internet pode cair. Use try/except nos pontos críticos.
  • Faça backup antes de automações que alteram ou apagam arquivos.
  • Respeite regras e termos de uso ao automatizar acesso a sites e sistemas.

Conclusão

Automatizar tarefas com Python é uma das formas mais rápidas de ver o valor da programação no dia a dia. Uma tarefa que leva 30 minutos por semana representa mais de 25 horas por ano. Escolha uma atividade repetitiva da sua rotina, divida em passos e transforme cada passo em código. Com o tempo, você vai começar a enxergar oportunidades de automação em todo lugar.