Você já se pegou repetindo a mesma tarefa no computador várias vezes? Talvez organizando arquivos, renomeando fotos ou copiando dados de um lugar para outro. Essas tarefas repetitivas consomem tempo e podem ser propensas a erros. Felizmente, existe uma solução: a automação com Python.
Neste artigo, vamos explorar como o Python, uma linguagem de programação fácil de aprender, pode ajudar qualquer pessoa a automatizar tarefas diárias. Não se preocupe se você nunca programou antes. Vamos começar do básico e avançar gradualmente.
O que é automação e por que se importar?
A automação é simplesmente o processo de fazer com que o computador execute tarefas repetitivas para você. Em vez de você fazer manualmente, o computador segue um conjunto de instruções (um programa) para completar o trabalho.
Por que automatizar tarefas?
- Economiza tempo: O que levaria horas manualmente pode ser reduzido a minutos ou segundos.
- Reduz erros: Computadores seguem instruções com precisão, sem se cansar.
- Aumenta a produtividade: Você pode focar em trabalhos que exigem criatividade e pensamento humano.
- Elimina o tédio: As tarefas repetitivas são entediantes e desmotivadoras.
Uma pesquisa da Fundação Getúlio Vargas mostrou que profissionais brasileiros gastam, em média, 30% do seu tempo com tarefas que poderiam ser automatizadas. Imagine recuperar quase um terço do seu dia de trabalho!
Por que escolher Python para automação?
Entre tantas linguagens de programação, Python se destaca como a escolha ideal para iniciantes e para automação de tarefas por vários motivos:
- Fácil de aprender: A sintaxe (forma de escrever) do Python é clara e parecida com o inglês comum.
- Legibilidade: Os programas em Python são fáceis de ler, mesmo para iniciantes.
- Comunidade grande: Milhares de pessoas usam Python no Brasil e no mundo, criando recursos e oferecendo ajuda.
- Bibliotecas prontas: Python tem um vasto conjunto de “ferramentas” já prontas para diversas tarefas.
- Versatilidade: Serve para automação simples e para projetos complexos como inteligência artificial.
De acordo com o índice TIOBE, que acompanha a popularidade das linguagens de programação, Python está entre as três linguagens mais usadas no mundo desde 2019. No Brasil, é uma das linguagens mais procuradas por empregadores.
5 Exemplos práticos de automação com Python
Agora que você entende os fundamentos, vamos explorar exemplos práticos de como automatizar tarefas comuns.
1. Organizando arquivos automaticamente
Você já teve uma pasta de downloads cheia de arquivos diferentes? Vamos criar um programa que organiza arquivos por tipo (imagens, documentos, vídeos, etc.):
import os
import shutil
def organizar_arquivos(diretorio):
# Dicionário com categorias e extensões
categorias = {
'imagens': ['.jpg', '.jpeg', '.png', '.gif', '.bmp'],
'documentos': ['.pdf', '.doc', '.docx', '.txt', '.xlsx', '.ppt', '.pptx'],
'videos': ['.mp4', '.avi', '.mov', '.mkv'],
'musicas': ['.mp3', '.wav', '.ogg', '.flac']
}
# Criar pastas se não existirem
for categoria in categorias:
if not os.path.exists(os.path.join(diretorio, categoria)):
os.mkdir(os.path.join(diretorio, categoria))
# Percorrer todos os arquivos
for arquivo in os.listdir(diretorio):
# Ignorar pastas
if os.path.isdir(os.path.join(diretorio, arquivo)):
continue
# Obter extensão do arquivo
extensao = os.path.splitext(arquivo)[1].lower()
# Mover para a pasta correspondente
for categoria, extensoes in categorias.items():
if extensao in extensoes:
shutil.move(
os.path.join(diretorio, arquivo),
os.path.join(diretorio, categoria, arquivo)
)
break
# Exemplo de uso
organizar_arquivos('C:/Users/SeuUsuario/Downloads')
Este programa verifica todos os arquivos na pasta de downloads, identifica o tipo de cada um e move para a pasta correta. Você economiza minutos ou até horas de trabalho manual.
2. Automatizando backups
Fazer backups regulares é crucial, mas fácil de esquecer. Vamos criar um script que automatiza esse processo:
import shutil
import datetime
import os
def fazer_backup(pasta_origem, pasta_destino):
# Criar nome da pasta com data atual
data_atual = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
nome_backup = f"backup_{data_atual}"
caminho_backup = os.path.join(pasta_destino, nome_backup)
# Criar pasta de backup
os.makedirs(caminho_backup, exist_ok=True)
# Copiar arquivos
for item in os.listdir(pasta_origem):
caminho_completo = os.path.join(pasta_origem, item)
if os.path.isfile(caminho_completo):
shutil.copy2(caminho_completo, caminho_backup)
elif os.path.isdir(caminho_completo):
shutil.copytree(caminho_completo, os.path.join(caminho_backup, item))
print(f"Backup concluído em: {caminho_backup}")
# Exemplo de uso
fazer_backup('C:/Documentos/Importantes', 'D:/Backups')
Com este script e um programador de tarefas (como o Agendador de Tarefas do Windows), você pode automatizar backups diários ou semanais.
3. Renomeando arquivos em lote
Imagine que você tem centenas de fotos com nomes como “IMG_20231025_123456.jpg” e quer renomeá-las para algo mais significativo, como “Viagem_Paris_001.jpg”. Python torna isso simples:
import os
def renomear_arquivos(diretorio, prefixo, iniciar_em=1):
# Listar arquivos
arquivos = [f for f in os.listdir(diretorio) if os.path.isfile(os.path.join(diretorio, f))]
# Filtrar por extensão, se necessário
# arquivos = [f for f in arquivos if f.lower().endswith('.jpg')]
# Ordenar arquivos (opcional)
arquivos.sort()
# Renomear
contador = iniciar_em
for arquivo in arquivos:
# Obter extensão
extensao = os.path.splitext(arquivo)[1]
# Criar novo nome
novo_nome = f"{prefixo}_{contador:03d}{extensao}"
# Renomear arquivo
os.rename(
os.path.join(diretorio, arquivo),
os.path.join(diretorio, novo_nome)
)
contador += 1
print(f"Renomeados {contador - iniciar_em} arquivos")
# Exemplo de uso
renomear_arquivos('C:/Fotos/Viagem', 'Paris', 1)
Este programa renomeia todos os arquivos de uma pasta para um formato padronizado com numeração sequencial.
4. Extraindo dados de páginas web
A extração de dados da web (web scraping) é outra área onde Python brilha. Vamos criar um exemplo que extrai os títulos das notícias mais recentes de um portal:
import requests
from bs4 import BeautifulSoup
def extrair_noticias(url):
# Fazer requisição para o site
resposta = requests.get(url)
# Verificar se a requisição foi bem-sucedida
if resposta.status_code != 200:
print("Erro ao acessar o site")
return []
# Analisar o HTML
soup = BeautifulSoup(resposta.text, 'html.parser')
# Encontrar os títulos das notícias (exemplo para o G1)
titulos = soup.select('.feed-post-link')
# Extrair o texto dos títulos
noticias = []
for titulo in titulos:
noticias.append(titulo.text)
return noticias
# Exemplo de uso
noticias = extrair_noticias('https://g1.globo.com/')
for i, noticia in enumerate(noticias, 1):
print(f"{i}. {noticia}")
Para usar este código, você precisará instalar duas bibliotecas:
pip install requests beautifulsoup4
Este programa acessa um site de notícias, analisa o HTML e extrai os títulos das manchetes. O mesmo princípio pode ser aplicado para extrair preços de produtos, dados de clima, cotações de ações e muito mais.
5. Automatizando envio de e-mails
Enviar e-mails repetitivos é outra tarefa que pode ser automatizada. Veja como enviar um e-mail com Python:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def enviar_email(destinatario, assunto, corpo, remetente, senha):
# Configurar mensagem
mensagem = MIMEMultipart()
mensagem['From'] = remetente
mensagem['To'] = destinatario
mensagem['Subject'] = assunto
# Adicionar corpo do e-mail
mensagem.attach(MIMEText(corpo, 'plain'))
# Conectar ao servidor de e-mail (exemplo com Gmail)
servidor = smtplib.SMTP('smtp.gmail.com', 587)
servidor.starttls() # Segurança
try:
# Login
servidor.login(remetente, senha)
# Enviar e-mail
texto = mensagem.as_string()
servidor.sendmail(remetente, destinatario, texto)
print("E-mail enviado com sucesso!")
except Exception as e:
print(f"Erro ao enviar e-mail: {e}")
finally:
servidor.quit()
# Exemplo de uso
enviar_email(
'destinatario@email.com',
'Relatório Semanal',
'Olá! Segue em anexo o relatório semanal. Atenciosamente, Equipe',
'seu_email@gmail.com',
'sua_senha'
)
Observação importante: Para usar este código com o Gmail, você precisará configurar uma “senha de aplicativo” em vez da sua senha normal, devido às políticas de segurança do Google.
Este script pode ser expandido para enviar e-mails em massa a partir de uma lista de contatos, incluir anexos ou enviar relatórios periódicos.
Automatização avançada: Combinando técnicas
Quando você dominar os exemplos básicos, pode combinar diferentes técnicas para criar automações mais poderosas. Vejamos alguns exemplos avançados.
Monitoramento de preços de produtos online
Imagine que você quer comprar um produto, mas está esperando uma promoção. Em vez de verificar o site todos os dias, você pode criar um programa que faz isso por você:
import requests
from bs4 import BeautifulSoup
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def verificar_preco(url, preco_desejado, seletor_css):
# Fazer requisição para o site
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
resposta = requests.get(url, headers=headers)
# Analisar o HTML
soup = BeautifulSoup(resposta.text, 'html.parser')
# Encontrar o elemento de preço
elemento_preco = soup.select_one(seletor_css)
if not elemento_preco:
return None
# Extrair o preço (exemplo: "R$ 1.299,00" -> 1299.00)
texto_preco = elemento_preco.text.strip()
preco_atual = float(texto_preco
.replace('R$', '')
.replace('.', '')
.replace(',', '.')
.strip())
return preco_atual
def enviar_alerta(preco, produto, url):
# Configurações de e-mail
remetente = "seu_email@gmail.com"
senha = "sua_senha_de_app"
destinatario = "seu_email@gmail.com"
# Montar mensagem
mensagem = MIMEMultipart()
mensagem['From'] = remetente
mensagem['To'] = destinatario
mensagem['Subject'] = f"Alerta de preço: {produto}"
corpo = f"""
O produto que você está monitorando está com um bom preço!
Produto: {produto}
Preço atual: R$ {preco:.2f}
Link: {url}
Corra para aproveitar!
"""
mensagem.attach(MIMEText(corpo, 'plain'))
# Enviar e-mail
servidor = smtplib.SMTP('smtp.gmail.com', 587)
servidor.starttls()
servidor.login(remetente, senha)
texto = mensagem.as_string()
servidor.sendmail(remetente, destinatario, texto)
servidor.quit()
def monitorar_produto(url, nome_produto, preco_alvo, seletor_css, intervalo_horas=3):
print(f"Começando a monitorar {nome_produto}...")
while True:
try:
preco_atual = verificar_preco(url, preco_alvo, seletor_css)
if preco_atual is None:
print("Não foi possível encontrar o preço")
else:
print(f"Preço atual de {nome_produto}: R$ {preco_atual:.2f}")
if preco_atual <= preco_alvo:
print(f"Preço bom encontrado! Enviando alerta...")
enviar_alerta(preco_atual, nome_produto, url)
break # Encerra após enviar o alerta
except Exception as e:
print(f"Erro: {e}")
# Esperar antes da próxima verificação
print(f"Aguardando {intervalo_horas} horas até a próxima verificação...")
time.sleep(intervalo_horas * 3600) # Converter horas para segundos
# Exemplo de uso
monitorar_produto(
url="https://www.exemplo.com.br/produto/123",
nome_produto="Smartphone XYZ",
preco_alvo=1500.00,
seletor_css=".product-price",
intervalo_horas=6
)
Este programa combina web scraping com envio de e-mails para monitorar preços de produtos e notificar você quando o preço cair abaixo do valor desejado.
Agendando suas automações
Criar um script de automação é ótimo, mas o ideal é que ele execute automaticamente sem sua intervenção. Existem várias maneiras de agendar a execução dos seus scripts Python:
No Windows: Agendador de Tarefas
- Crie um arquivo .bat que executa seu script Python:
@echo off python C:\caminho\para\seu\script.py
- Abra o Agendador de Tarefas (Task Scheduler)
- Clique em “Criar Tarefa Básica”
- Dê um nome e descrição
- Escolha a frequência (diária, semanal, etc.)
- Configure o horário de execução
- Selecione “Iniciar um programa”
- Navegue até seu arquivo .bat
No Linux/Mac: Crontab
No terminal, digite crontab -e
e adicione uma linha como:
0 9 * * * /usr/bin/python3 /caminho/para/seu/script.py
Isso executará o script todos os dias às 9h da manhã.
Bibliotecas Python essenciais para automação
Python tem um vasto ecossistema de bibliotecas que facilitam a automação. Aqui estão algumas das mais úteis:
Manipulação de arquivos e sistema
- os e shutil: Manipulação de arquivos e diretórios
- pathlib: Interface orientada a objetos para caminhos de arquivos
- glob: Localização de arquivos usando padrões
- zipfile: Trabalhando com arquivos ZIP
Web e Internet
- requests: Fazer requisições HTTP
- BeautifulSoup: Análise de HTML e XML
- Selenium: Automação de navegadores web
- urllib: Ferramentas para trabalhar com URLs
Manipulação de dados
- pandas: Análise e manipulação de dados
- openpyxl: Leitura e escrita de arquivos Excel
- csv: Processamento de arquivos CSV
- json: Trabalhando com dados JSON
Automação de GUI
- pyautogui: Controle automático do mouse e teclado
- pyscreeze: Captura de tela
- pyperclip: Acesso à área de transferência
Processamento de imagens
- Pillow (PIL): Manipulação de imagens
- opencv-python: Visão computacional e processamento de imagens
Para instalar qualquer dessas bibliotecas, use o comando pip:
pip install nome_da_biblioteca
Por exemplo, para instalar a biblioteca requests:
pip install requests
Dicas para criação de automações eficientes
Ao criar suas automações, siga estas dicas para obter os melhores resultados:
1. Comece pequeno
Não tente automatizar tarefas complexas de uma vez. Comece com algo simples, entenda como funciona e depois avance para projetos mais complexos.
2. Documente seu código
Adicione comentários explicando o que cada parte do código faz. Isso ajudará quando você precisar revisar ou modificar o código no futuro.
# Este bloco extrai o preço do produto da página
preco_texto = elemento.text.strip() # Remove espaços em branco
preco = float(preco_texto.replace('R$', '').replace('.', '').replace(',', '.')) # Converte para número
3. Trate erros adequadamente
Suas automações devem ser robustas. Use blocos try/except para lidar com possíveis erros:
try:
# Código que pode gerar erro
arquivo = open("dados.txt", "r")
conteudo = arquivo.read()
except FileNotFoundError:
print("Arquivo não encontrado. Criando novo arquivo...")
arquivo = open("dados.txt", "w")
arquivo.write("Conteúdo inicial")
finally:
arquivo.close()
4. Use configurações externas
Em vez de codificar valores como senhas ou caminhos diretamente no script, use arquivos de configuração:
import json
# Carregar configurações
with open("config.json", "r") as f:
config = json.load(f)
email = config["email"]
senha = config["senha"]
5. Registre atividades em logs
Adicione logs para rastrear o que seu programa está fazendo:
import logging
# Configurar logging
logging.basicConfig(
filename="automacao.log",
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
# Usar logging
logging.info("Iniciando o processo")
logging.warning("Arquivo não encontrado")
logging.error("Erro ao conectar ao servidor")
Recursos para aprendizado contínuo
Se você se interessou por automação com Python, aqui estão alguns recursos gratuitos em português para continuar aprendendo:
- Curso de Python Completo: Aprenda Python do básico ao avançado.
- Documentação oficial do Python em português: Tradução da documentação oficial
- Automate the Boring Stuff with Python: Livro gratuito focado em automação (em inglês)
Conclusão: O próximo passo na sua jornada de automação
Automação com Python não é apenas para programadores experientes. Com um pouco de prática, qualquer pessoa pode criar scripts úteis que economizam tempo e esforço no dia a dia.
Neste artigo, vimos como começar com Python, entendemos conceitos básicos e exploramos exemplos práticos de automação para tarefas comuns. Também conhecemos bibliotecas poderosas e dicas para criar automações eficientes.
O próximo passo é colocar esse conhecimento em prática. Pense em tarefas repetitivas que você realiza regularmente. Como você poderia automatizá-las com Python? Comece com algo simples e, à medida que ganhar confiança, avance para projetos mais complexos.
Lembre-se: a melhor maneira de aprender programação é praticando. Não tenha medo de experimentar, cometer erros e aprender com eles. Com o tempo, você desenvolverá habilidades valiosas que podem transformar completamente sua produtividade.