Automação com Python: 20 Scripts Prontos para Tarefas Reais

Atualizado em: 17/07/2026
Tempo de leitura: 5 minutos
Automação de tarefas com Python

Automação com Python é uma forma prática de eliminar tarefas repetitivas: organizar arquivos, gerar relatórios, consultar APIs, tratar planilhas e acompanhar páginas da web. Neste guia, você encontrará 20 scripts prontos, organizados do mais simples ao mais completo e acompanhados das adaptações necessárias para usar no seu computador.

Os exemplos priorizam segurança: operações potencialmente destrutivas começam em modo de simulação, requisições usam tempo limite e senhas não ficam escritas no código. Antes de começar, confirme que o Python está disponível seguindo o guia de como instalar Python.

Preparando o ambiente para as automações

Crie uma pasta para o projeto, abra o terminal nela e use um ambiente virtual. No Windows:

python -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip

No macOS ou Linux:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip

A maioria dos scripts usa apenas a biblioteca padrão. Para os exemplos de web, Excel e extração de HTML, instale:

python -m pip install requests beautifulsoup4 openpyxl

Automação de arquivos e pastas

1. Organizar arquivos por extensão

O script cria subpastas e separa os arquivos por categoria. Ele começa com SIMULAR = True; altere para False somente depois de conferir a lista exibida.

from pathlib import Path
import shutil

PASTA = Path.home() / "Downloads"
SIMULAR = True
GRUPOS = {
    "imagens": {".jpg", ".jpeg", ".png", ".webp"},
    "documentos": {".pdf", ".docx", ".txt", ".xlsx"},
    "compactados": {".zip", ".rar", ".7z"},
}

for arquivo in PASTA.iterdir():
    if not arquivo.is_file():
        continue
    destino_nome = next((nome for nome, exts in GRUPOS.items()
                         if arquivo.suffix.lower() in exts), "outros")
    destino = PASTA / destino_nome / arquivo.name
    print(f"{arquivo.name} -> {destino}")
    if not SIMULAR:
        destino.parent.mkdir(exist_ok=True)
        shutil.move(str(arquivo), str(destino))

2. Renomear arquivos em lote

from pathlib import Path

PASTA = Path("fotos")
SIMULAR = True

for numero, arquivo in enumerate(sorted(PASTA.glob("*.*")), start=1):
    novo = arquivo.with_name(f"viagem_{numero:03d}{arquivo.suffix.lower()}")
    print(f"{arquivo.name} -> {novo.name}")
    if not SIMULAR and not novo.exists():
        arquivo.rename(novo)

Evite executar diretamente em uma pasta importante. Faça uma cópia de teste e verifique se nenhum nome de destino já existe.

3. Criar backup ZIP com data e hora

from datetime import datetime
from pathlib import Path
import shutil

origem = Path("projeto")
destino = Path("backups")
destino.mkdir(exist_ok=True)
carimbo = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
base = destino / f"projeto_{carimbo}"

arquivo_zip = shutil.make_archive(str(base), "zip", root_dir=origem)
print(f"Backup criado: {arquivo_zip}")

4. Localizar arquivos duplicados sem apagar nada

from collections import defaultdict
from hashlib import sha256
from pathlib import Path

PASTA = Path("documentos")
por_hash = defaultdict(list)

for arquivo in PASTA.rglob("*"):
    if not arquivo.is_file():
        continue
    digest = sha256()
    with arquivo.open("rb") as entrada:
        for bloco in iter(lambda: entrada.read(1024 * 1024), b""):
            digest.update(bloco)
    por_hash[digest.hexdigest()].append(arquivo)

for caminhos in por_hash.values():
    if len(caminhos) > 1:
        print("Possíveis duplicados:")
        for caminho in caminhos:
            print(" -", caminho)

O código apenas lista arquivos de conteúdo idêntico. A exclusão deve ser feita manualmente, depois de verificar cada grupo.

5. Copiar arquivos alterados recentemente

from datetime import datetime, timedelta
from pathlib import Path
import shutil

origem = Path("projeto")
destino = Path("arquivos_recentes")
limite = datetime.now() - timedelta(days=7)

for arquivo in origem.rglob("*"):
    if arquivo.is_file() and datetime.fromtimestamp(arquivo.stat().st_mtime) >= limite:
        relativo = arquivo.relative_to(origem)
        copia = destino / relativo
        copia.parent.mkdir(parents=True, exist_ok=True)
        shutil.copy2(arquivo, copia)
        print("Copiado:", relativo)

6. Encontrar arquivos grandes

from pathlib import Path

PASTA = Path.home()
LIMITE_MB = 500

arquivos = []
for caminho in PASTA.rglob("*"):
    try:
        if caminho.is_file():
            tamanho = caminho.stat().st_size / (1024 ** 2)
            if tamanho >= LIMITE_MB:
                arquivos.append((tamanho, caminho))
    except (PermissionError, OSError):
        continue

for tamanho, caminho in sorted(arquivos, reverse=True):
    print(f"{tamanho:,.1f} MB | {caminho}")

Automação de CSV, JSON e Excel

7. Filtrar linhas de um CSV

import csv

with open("vendas.csv", encoding="utf-8", newline="") as entrada, \
     open("vendas_altas.csv", "w", encoding="utf-8", newline="") as saida:
    leitor = csv.DictReader(entrada)
    escritor = csv.DictWriter(saida, fieldnames=leitor.fieldnames)
    escritor.writeheader()
    for linha in leitor:
        if float(linha["valor"].replace(",", ".")) >= 1000:
            escritor.writerow(linha)

8. Somar valores por categoria

import csv
from collections import defaultdict

soma = defaultdict(float)
with open("despesas.csv", encoding="utf-8", newline="") as arquivo:
    for linha in csv.DictReader(arquivo):
        soma[linha["categoria"]] += float(linha["valor"].replace(",", "."))

for categoria, total in sorted(soma.items()):
    print(f"{categoria}: R$ {total:.2f}")

9. Converter JSON em CSV

import csv
import json

with open("clientes.json", encoding="utf-8") as arquivo:
    clientes = json.load(arquivo)

if not clientes:
    raise SystemExit("O JSON não contém registros.")

campos = sorted({chave for item in clientes for chave in item})
with open("clientes.csv", "w", encoding="utf-8", newline="") as arquivo:
    escritor = csv.DictWriter(arquivo, fieldnames=campos)
    escritor.writeheader()
    escritor.writerows(clientes)

10. Criar uma planilha Excel

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "Resumo"
ws.append(["Produto", "Quantidade", "Preço"])
ws.append(["Teclado", 2, 150.00])
ws.append(["Mouse", 3, 80.00])
ws["E1"] = "Total"
ws["E2"] = "=SUMPRODUCT(B2:B3,C2:C3)"
wb.save("resumo.xlsx")
print("Planilha criada.")

O método save() sobrescreve um arquivo existente com o mesmo nome. Use um nome novo ou faça uma cópia antes de editar uma planilha importante.

11. Gerar relatório de uma pasta em CSV

import csv
from datetime import datetime
from pathlib import Path

PASTA = Path("documentos")
with open("relatorio_arquivos.csv", "w", encoding="utf-8", newline="") as saida:
    escritor = csv.writer(saida)
    escritor.writerow(["arquivo", "extensao", "tamanho_bytes", "modificado_em"])
    for arquivo in PASTA.rglob("*"):
        if arquivo.is_file():
            dados = arquivo.stat()
            escritor.writerow([
                str(arquivo.relative_to(PASTA)),
                arquivo.suffix.lower(),
                dados.st_size,
                datetime.fromtimestamp(dados.st_mtime).isoformat(timespec="seconds"),
            ])

Automação de web e APIs

Antes de coletar conteúdo, confira os termos de uso, o arquivo robots.txt e os limites do serviço. Não contorne autenticação, CAPTCHA ou bloqueios. Para um estudo aprofundado, consulte o guia de web scraping com BeautifulSoup e Requests.

12. Consultar uma API JSON

import requests

url = "https://api.github.com/repos/python/cpython"
try:
    resposta = requests.get(url, timeout=(5, 20))
    resposta.raise_for_status()
    dados = resposta.json()
    print("Repositório:", dados["full_name"])
    print("Estrelas:", dados["stargazers_count"])
except requests.RequestException as erro:
    print("Falha na consulta:", erro)

13. Baixar um arquivo em blocos

from pathlib import Path
import requests

url = "https://www.python.org/static/community_logos/python-logo.png"
destino = Path("python-logo.png")

with requests.get(url, stream=True, timeout=(5, 30)) as resposta:
    resposta.raise_for_status()
    with destino.open("wb") as arquivo:
        for bloco in resposta.iter_content(chunk_size=64 * 1024):
            if bloco:
                arquivo.write(bloco)
print("Salvo em:", destino.resolve())

14. Extrair o título de uma página

import requests
from bs4 import BeautifulSoup

url = "https://www.python.org/"
resposta = requests.get(
    url,
    headers={"User-Agent": "EstudoPython/1.0"},
    timeout=(5, 20),
)
resposta.raise_for_status()
soup = BeautifulSoup(resposta.text, "html.parser")
print(soup.title.get_text(strip=True) if soup.title else "Sem título")

15. Monitorar o status de uma página

from datetime import datetime
import time
import requests

URL = "https://example.com/"
INTERVALO = 300  # cinco minutos

while True:
    try:
        resposta = requests.get(URL, timeout=(5, 20))
        status = resposta.status_code
    except requests.RequestException as erro:
        status = f"erro: {erro}"
    print(datetime.now().isoformat(timespec="seconds"), status)
    time.sleep(INTERVALO)

Use intervalos razoáveis. Para monitoramento permanente, prefira um agendador do sistema e registros em arquivo em vez de manter o terminal aberto indefinidamente.

Automação de produtividade e sistema

16. Executar outro programa com segurança

import subprocess
import sys

resultado = subprocess.run(
    [sys.executable, "gerar_relatorio.py", "--mes", "2026-07"],
    capture_output=True,
    text=True,
    timeout=120,
    check=False,
)
print(resultado.stdout)
if resultado.returncode != 0:
    print(resultado.stderr)

Passar os argumentos como lista evita depender de shell=True. Não execute comandos recebidos diretamente de formulários ou usuários sem validação.

17. Enviar e-mail usando variáveis de ambiente

import os
import smtplib
from email.message import EmailMessage

usuario = os.environ["SMTP_USUARIO"]
senha = os.environ["SMTP_SENHA"]

mensagem = EmailMessage()
mensagem["From"] = usuario
mensagem["To"] = "[email protected]"
mensagem["Subject"] = "Relatório concluído"
mensagem.set_content("O relatório foi gerado com sucesso.")

with smtplib.SMTP_SSL("smtp.example.com", 465, timeout=30) as servidor:
    servidor.login(usuario, senha)
    servidor.send_message(mensagem)

Troque o servidor e o destinatário pelos dados do seu provedor. Use senha de aplicativo quando o serviço exigir e envie mensagens somente para destinatários autorizados.

18. Registrar atividades em arquivo de log

import logging

logging.basicConfig(
    filename="automacao.log",
    level=logging.INFO,
    format="%(asctime)s | %(levelname)s | %(message)s",
    encoding="utf-8",
)

logging.info("Automação iniciada")
try:
    resultado = 10 / 2
    logging.info("Resultado calculado: %s", resultado)
except Exception:
    logging.exception("A automação falhou")

19. Transformar o script em comando de terminal

import argparse
from pathlib import Path

parser = argparse.ArgumentParser(description="Conta arquivos por extensão.")
parser.add_argument("pasta", type=Path)
parser.add_argument("--extensao", default=".py")
args = parser.parse_args()

extensao = args.extensao if args.extensao.startswith(".") else f".{args.extensao}"
total = sum(1 for item in args.pasta.rglob(f"*{extensao}") if item.is_file())
print(f"Encontrados: {total}")

Salve como contar.py e execute, por exemplo: python contar.py projeto --extensao .py.

20. Gerar um relatório final de tarefas

from datetime import datetime
from pathlib import Path

resultados = [
    ("Backup", True, "backup criado"),
    ("API", True, "dados recebidos"),
    ("E-mail", False, "credencial ausente"),
]

linhas = [
    "# Relatório da automação",
    "",
    f"Gerado em: {datetime.now().isoformat(timespec='seconds')}",
    "",
]
for tarefa, sucesso, detalhe in resultados:
    simbolo = "OK" if sucesso else "FALHA"
    linhas.append(f"- [{simbolo}] {tarefa}: {detalhe}")

Path("relatorio.md").write_text("\n".join(linhas), encoding="utf-8")

Como agendar uma automação

Depois de testar o script manualmente, use o Agendador de Tarefas do Windows, o cron no Linux ou o launchd no macOS. Informe o caminho completo do interpretador do ambiente virtual e o caminho completo do arquivo. Assim, a execução não depende da pasta aberta no terminal.

Boas práticas antes de colocar em produção

  • Teste com cópias de arquivos e poucos registros.
  • Registre o que foi alterado e mantenha backups.
  • Use caminhos configuráveis com pathlib.
  • Não salve senhas, tokens ou chaves de API no código.
  • Defina timeout, trate exceções e valide as respostas de serviços externos.
  • Respeite permissões, termos de uso e limites de requisições.
  • Fixe as dependências do projeto quando a automação se tornar importante.

Qual script escolher primeiro?

Para começar, escolha uma tarefa pequena e reversível, como gerar um relatório de arquivos ou filtrar um CSV. Depois, transforme valores fixos em argumentos, adicione logs e agende a execução. Essa evolução é mais segura do que tentar automatizar um processo inteiro de uma só vez.

Quem ainda está consolidando a base da linguagem pode seguir o roadmap de Python e praticar os exemplos no compilador Python online. Scripts que acessam arquivos, rede ou pacotes externos devem ser executados localmente.

Perguntas frequentes

Python é bom para automatizar tarefas?

Sim. A linguagem possui módulos prontos para arquivos, processos, dados, rede, e-mail e linha de comando, além de bibliotecas externas para planilhas, navegadores e APIs.

Preciso saber Python avançado?

Não. Variáveis, condições, laços, funções e tratamento de erros já permitem criar automações úteis. O mais importante é testar com dados controlados e entender cada operação antes de executá-la.

Posso copiar os scripts e usar diretamente?

Os exemplos são modelos. Você precisa ajustar caminhos, nomes de colunas, endereços de serviços e regras do seu processo. Leia o código e teste em uma pasta separada.

Como evitar que uma automação apague dados?

Comece em modo de simulação, não exclua arquivos automaticamente, valide os destinos, crie backup e registre todas as ações. Para operações críticas, exija confirmação humana.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Comparando listas e diferenças entre arrays em Python
    Automação e Scripts
    Foto de perfil de Leandro Hirt da Academify

    Como comparar duas listas em Python e achar as diferenças

    Comparar dados é uma das tarefas mais comuns e fundamentais no dia a dia de qualquer programador. Seja para sincronizar

    Ler mais

    Tempo de leitura: 11 minutos
    01/05/2026
    Bot Python para monitorar queda de preço de produtos online
    Automação e Scripts
    Foto de perfil de Leandro Hirt da Academify

    Como criar um bot que avisa quando um produto baixa de preço

    Você já passou pela frustração de comprar um eletrônico e, no dia seguinte, ver que o preço caiu drasticamente? Monitorar

    Ler mais

    Tempo de leitura: 8 minutos
    23/04/2026
    Como converter código Python para C usando Cython
    Automação e Scripts
    Foto de perfil de Leandro Hirt da Academify

    Como converter Python em código C com Cython: Guia de Velocidade

    Muitos desenvolvedores escolhem o Python por sua legibilidade e vasta biblioteca, mas eventualmente se deparam com um obstáculo comum: a

    Ler mais

    Tempo de leitura: 9 minutos
    22/04/2026
    Web scraper de notícias em Python com envio para Telegram
    Automação e Scripts
    Foto de perfil de Leandro Hirt da Academify

    Como criar um Web Scraper de notícias e enviar para o Telegram

    Você já sentiu a necessidade de acompanhar notícias de um site específico sem ter que abrir o navegador a cada

    Ler mais

    Tempo de leitura: 8 minutos
    16/04/2026
    Integração do ChatGPT com código Python em projeto prático
    Automação e Scripts
    Foto de perfil de Leandro Hirt da Academify

    Como integrar o ChatGPT ao seu código Python: Guia Prático

    A inteligência artificial transformou a maneira como desenvolvemos software, e aprender como integrar o ChatGPT ao seu código Python é

    Ler mais

    Tempo de leitura: 10 minutos
    15/04/2026
    Automação em Python para organizar arquivos do computador
    Automação e Scripts
    Foto de perfil de Leandro Hirt da Academify

    Como organizar os arquivos do seu PC com Python em 5 minutos

    Você já sentiu aquela frustração de abrir a pasta de downloads e encontrar centenas de arquivos misturados? Documentos PDF perdidos

    Ler mais

    Tempo de leitura: 8 minutos
    14/04/2026