Mateus Cavalcanti13 de set. de 20263 minAutomação
AutomaçãoDevOpsProdutividadePythonScripts

Python para automação: Scripts que economizam horas

Quando o objetivo é criar ferramentas de automação para o dia a dia, muitas pessoas recorrem imediatamente a pacotes externos no PyPI. No entanto, a biblioteca padrão do Python (standard library) já oferece tudo o que é necessário para construir ferramentas rápidas, portáveis e com manutenção trivial — sem precisar criar ambientes virtuais nem gerenciar pip install.

Abaixo, reunimos os principais módulos e dois scripts práticos que você pode utilizar imediatamente.


O kit mínimo essencial da biblioteca padrão

  • pathlib: Manipulação orientada a objetos de caminhos e arquivos no sistema operacional.
  • argparse: Construção de interfaces de linha de comando (CLI) com flags, descrições e validações automáticas.
  • subprocess: Execução e controle de comandos do sistema com captura de streams stdout e stderr.
  • urllib.request e json: Realização de chamadas HTTP e manipulação de payloads sem dependências como requests ou httpx.
  • csv: Leitura e escrita estruturada de dados tabulares.

Exemplo 1: Gerador de inventário e auditoria de arquivos

Este script vasculha um diretório recursivamente, calcula tamanhos de arquivos e exporta um relatório em CSV:

import argparse
import csv
from pathlib import Path

def generate_inventory(target_dir: str, output_csv: str) -> None:
    root = Path(target_dir).resolve()
    if not root.is_dir():
        raise SystemExit(f"Erro: O diretório '{target_dir}' não existe.")

    rows = []
    total_bytes = 0

    for file_path in root.rglob("*"):
        if file_path.is_file():
            size = file_path.stat().st_size
            total_bytes += size
            rows.append([str(file_path.relative_to(root)), size, file_path.suffix])

    with open(output_csv, "w", newline="", encoding="utf-8") as f:
        writer = csv.writer(f)
        writer.writerow(["caminho_relativo", "tamanho_bytes", "extensao"])
        writer.writerows(rows)

    print(f"✅ Inventário concluído: {len(rows)} arquivos ({total_bytes / (1024*1024):.2f} MB).")
    print(f"📄 Arquivo gerado em: {output_csv}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Auditoria e inventário de arquivos")
    parser.add_argument("dir", help="Caminho do diretório a inspecionar")
    parser.add_argument("--out", default="inventory.csv", help="Nome do arquivo CSV de saída")
    args = parser.parse_args()

    generate_inventory(args.dir, args.out)

Exemplo 2: Monitor de Health Check de APIs com Retry e Notificação

Precisa validar se múltiplos serviços estão online sem instalar nada além do Python? Use urllib.request:

import json
import time
from urllib.error import URLError, HTTPError
from urllib.request import Request, urlopen

SERVICES = [
    {"name": "Site Principal", "url": "https://mateusjunior.dev"},
    {"name": "API Health", "url": "https://api.github.com"},
]

def check_service(name: str, url: str, timeout: int = 5) -> bool:
    req = Request(url, headers={"User-Agent": "AutomationBot/1.0"})
    try:
        with urlopen(req, timeout=timeout) as response:
            return 200 <= response.status < 400
    except (HTTPError, URLError, TimeoutError):
        return False

def run_health_checks():
    print(f"🔎 Iniciando verificação de serviços em {time.strftime('%Y-%m-%d %H:%M:%S')}...")
    for service in SERVICES:
        status = check_service(service["name"], service["url"])
        badge = "🟢 ONLINE" if status else "🔴 OFFLINE"
        print(f"[{badge}] {service['name']} -> {service['url']}")

if __name__ == "__main__":
    run_health_checks()

Boas práticas para scripts de automação duradouros

  1. Idempotência: Garanta que rodar o mesmo script duas vezes não gere duplicidade nem corrompa dados.
  2. Códigos de saída adequados: Termine com sys.exit(0) em caso de sucesso e sys.exit(1) em falhas, facilitando integração em pipelines de CI/CD ou crons.
  3. Timeouts explícitos: Nunca faça chamadas de rede ou subprocessos sem definir timeout.
  4. Logs legíveis: Mensagens claras ajudam qualquer membro do time a debugar a automação em servidores remotos.

Busca Global e Comandos

Navegue por artigos, projetos, certificações ou execute comandos rápidos.