21 Scripts Simples em Python Que Automatizarão Suas Tarefas Diárias

Como alguém que passou mais de uma década no mundo da programação, aprendi que automatizar tarefas repetitivas pode economizar uma quantidade significativa de tempo e esforço.

Python, com sua sintaxe simples e bibliotecas poderosas, é uma das melhores linguagens de programação para criar scripts de automação. Quer você seja um programador ou alguém querendo facilitar as tarefas diárias, Python tem ferramentas que podem ajudá-lo.

Neste artigo, compartilharei 21 scripts em Python que usei para automatizar várias tarefas. Esses scripts são perfeitos para qualquer pessoa que deseja economizar tempo e melhorar a eficiência em sua rotina de trabalho.

1. Renomear Arquivos em Massa

Renomear arquivos um por um pode ser uma tarefa demorada, mas com Python, você pode facilmente automatizar isso usando o módulo os.

Aqui está um script simples que renomeia vários arquivos em uma pasta com base em um padrão dado:

import os

def bulk_rename(folder_path, old_name_part, new_name_part):
    for filename in os.listdir(folder_path):
        if old_name_part in filename:
            new_filename = filename.replace(old_name_part, new_name_part)
            os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))
            print(f"Renamed {filename} to {new_filename}")

folder = '/path/to/your/folder' bulk_rename(folder, 'old_part', 'new_part')

Este script procura por arquivos que contêm old_name_part em seus nomes e os substitui por new_name_part.

2. Fazer Backup de Arquivos Automaticamente

Todos sabemos como é importante fazer backup de arquivos regularmente, e essa tarefa pode ser facilmente automatizada usando o módulo shutil do Python.

Este script copiará todos os arquivos de um diretório para outro para fins de backup:

import shutil
import os

def backup_files(src_dir, dest_dir):
    if not os.path.exists(dest_dir):
        os.makedirs(dest_dir)
    for file in os.listdir(src_dir):
        full_file_name = os.path.join(src_dir, file)
        if os.path.isfile(full_file_name):
            shutil.copy(full_file_name, dest_dir)
            print(f"Backed up {file} to {dest_dir}")

source = '/path/to/source/directory' destination = '/path/to/destination/directory' backup_files(source, destination)

Você pode agendar este script para ser executado diariamente usando ferramentas de agendamento de tarefas como o cron (Linux) ou o Agendador de Tarefas (Windows).

3. Download de Arquivos da Internet

Se você frequentemente baixa arquivos da internet, então você pode automatizar essa tarefa usando a biblioteca aiohttp.

Aqui está um script simples para baixar arquivos de URLs:

import aiohttp
import asyncio
import aiofiles

async def download_file(url, filename):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            async with aiofiles.open(filename, 'wb') as file:
                await file.write(await response.read())
            print(f"Downloaded {filename}")

urls = {
    'https://example.com/file1.zip': 'file1.zip',
    'https://example.com/file2.zip': 'file2.zip'
}

async def download_all():
    tasks = [download_file(url, filename) for url, filename in urls.items()]
    await asyncio.gather(*tasks)

asyncio.run(download_all())

Este script baixa o arquivo da URL especificada e o salva na pasta especificada.

4. Automatização de Relatórios por Email

Se você precisa enviar relatórios por email regularmente, você pode automatizá-lo usando a biblioteca smtplib, que permite enviar emails de uma conta do Gmail facilmente:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(subject, body, to_email):
    sender_email = '[email protected]'
    sender_password = 'yourpassword'
    receiver_email = to_email

    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain'))

    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())
        server.quit()
        print("Email sent successfully!")
    except Exception as e:
        print(f"Failed to send email: {e}")

subject = 'Monthly Report'
body = 'Here is the monthly report.'
send_email(subject, body, '[email protected]')

Este script enviará um email simples com um assunto e corpo para um destinatário especificado. Certifique-se de habilitar aplicativos menos seguros no Gmail se você usar este método.

5. Agendador de Tarefas (Automação de Tarefas)

Agendar tarefas pode ser feito facilmente usando a biblioteca schedule, que permite automatizar tarefas como enviar um email ou executar um script de backup em horários específicos:

import schedule
import time

def job():
    print("Running scheduled task!")

# Schedule the task to run every day at 10:00 AM
schedule.every().day.at("10:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

Este script continuará em execução e acionará tarefas no horário especificado, neste caso, 10:00 AM todos os dias.

6. Web Scraping para Coleta de Dados

Usar o aiohttp para requisições HTTP assíncronas em vez da biblioteca síncrona requests pode tornar a raspagem de dados na web mais eficiente.

Este exemplo recupera várias páginas em paralelo.

import aiohttp
import asyncio
from bs4 import BeautifulSoup

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def scrape(urls):
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url) for url in urls]
        html_pages = await asyncio.gather(*tasks)
        for html in html_pages:
            soup = BeautifulSoup(html, 'html.parser')
            print(soup.title.string)

urls = ['https://example.com/page1', 'https://example.com/page2'] asyncio.run(scrape(urls))

7. Automatizando Postagens em Mídias Sociais

Se você gerencia contas de mídias sociais, então pode automatizar postagens usando bibliotecas como Tweepy (para o Twitter) e Instagram-API (para o Instagram) que permitem postar automaticamente.

Abaixo está um exemplo usando a biblioteca Tweepy para postar um tweet:

import tweepy

def tweet(message):
    consumer_key = 'your_consumer_key'
    consumer_secret = 'your_consumer_secret'
    access_token = 'your_access_token'
    access_token_secret = 'your_access_token_secret'

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    api = tweepy.API(auth)

    api.update_status(message)
    print("Tweet sent successfully!")

tweet("Hello, world!")

Este script posta um tweet com a mensagem “Olá, mundo!” na sua conta do Twitter.

8. Automatizando a Geração de Faturas

Se você gera faturas regularmente, então pode automatizar isso usando bibliotecas como Fpdf, que irá criar faturas em PDF:

from fpdf import FPDF

def create_invoice(client_name, amount):
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    pdf.cell(200, 10, txt="Invoice", ln=True, align='C')
    pdf.cell(200, 10, txt=f"Client: {client_name}", ln=True, align='L')
    pdf.cell(200, 10, txt=f"Amount: ${amount}", ln=True, align='L')
    pdf.output(f"{client_name}_invoice.pdf")
    print(f"Invoice for {client_name} created successfully!")

create_invoice('John Doe', 500)

Este script cria uma fatura simples e a salva como um PDF.

9. Monitorando a Disponibilidade de um Site

O Python pode ser usado para automatizar o monitoramento da disponibilidade de um site usando a biblioteca requests, que pode verificar periodicamente se um site está online ou não:

import requests
import time

def check_website(url):
    try:
        response = requests.get(url)
        if response.status_code == 200:
            print(f"Website {url} is up!")
        else:
            print(f"Website {url} returned a status code {response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"Error checking website {url}: {e}")

url = 'https://example.com' while True: check_website(url) time.sleep(3600) # Check every hour

Este script verifica se o site está online e imprime o código de status.

10. Resposta Automática a Emails

Se você frequentemente recebe emails e deseja configurar uma resposta automática, então use as bibliotecas imaplib e smtplib para responder automaticamente aos emails:

import imaplib
import smtplib
from email.mime.text import MIMEText

def auto_reply():
    # Connect to email server
    mail = imaplib.IMAP4_SSL("imap.gmail.com")
    mail.login('[email protected]', 'yourpassword')
    mail.select('inbox')

    # Search for unread emails
    status, emails = mail.search(None, 'UNSEEN')

    if status == "OK":
        for email_id in emails[0].split():
            status, email_data = mail.fetch(email_id, '(RFC822)')
            email_msg = email_data[0][1].decode('utf-8')

            # Send auto-reply
            send_email("Auto-reply", "Thank you for your email. I'll get back to you soon.", '[email protected]')

def send_email(subject, body, to_email):
    sender_email = '[email protected]'
    sender_password = 'yourpassword'
    receiver_email = to_email

    msg = MIMEText(body)
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject

    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())

auto_reply()

Este script responde automaticamente aos emails não lidos com uma mensagem predefinida.

11. Limpeza de Arquivos

O Python oferece uma maneira eficaz de automatizar a limpeza de arquivos, especialmente para excluir ou mover arquivos antigos para manter diretórios organizados.

Abaixo está um script simples que exclui arquivos mais antigos do que um número especificado de dias usando os módulos os e time.

import aiofiles
import os
import asyncio
import time

async def clean_up(folder_path, days_old):
    now = time.time()
    cutoff_time = now - (days_old * 86400)
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.getmtime(file_path) < cutoff_time:
            await aiofiles.os.remove(file_path)
            print(f"Deleted {filename}")

folder = '/path/to/your/folder'
asyncio.run(clean_up(folder, 30))

12. Gerar Senhas Automaticamente

Criar senhas fortes e únicas é essencial para a segurança, e o Python pode ajudar a automatizar esse processo usando o módulo random.

Abaixo está um script simples que gera senhas aleatórias de um comprimento especificado, incorporando letras, dígitos e caracteres especiais para aumentar a segurança.

import random
import asyncio
import string

async def generate_password(length=12):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

async def generate_multiple_passwords(n, length=12):
    tasks = [generate_password(length) for _ in range(n)]
    passwords = await asyncio.gather(*tasks)
    print(passwords)

asyncio.run(generate_multiple_passwords(5))

13. Rastreador de Tarefas/Lembrete

Criar um sistema de rastreamento de tarefas ou lembretes em Python pode ser feito usando os módulos datetime e asyncio.

import asyncio
from datetime import datetime

async def task_reminder(task_name, interval):
    while True:
        print(f"Reminder: {task_name} - {datetime.now()}")
        await asyncio.sleep(interval)

async def main():
    await asyncio.gather(
        task_reminder("Drink Water", 7200),  # Remind every 2 hours
        task_reminder("Take a Break", 3600)  # Remind every 1 hour
    )

asyncio.run(main())

Este script envia um lembrete sobre a tarefa em um horário agendado.

14. Auto-Gerar Relatórios Diários

Automatize relatórios diários usando Python para coletar dados e formatá-los em um relatório:

import datetime
import aiofiles
import asyncio

async def generate_report(data):
    today = datetime.date.today()
    filename = f"daily_report_{today}.txt"
    async with aiofiles.open(filename, 'w') as file:
        await file.write(f"Report for {today}\n")
        await file.write("\n".join(data))
    print(f"Report generated: {filename}")

data = ["Task 1: Completed", "Task 2: Pending", "Task 3: Completed"]
asyncio.run(generate_report(data))

15. Monitorar Recursos do Sistema

Se você é um administrador de sistema, pode usar o Python para monitorar os recursos do seu sistema como uso de CPU e memória, com a ajuda da biblioteca psutil.

import psutil

def monitor_resources():
    cpu_usage = psutil.cpu_percent(interval=1)
    memory_usage = psutil.virtual_memory().percent
    print(f"CPU Usage: {cpu_usage}%")
    print(f"Memory Usage: {memory_usage}%")

monitor_resources()

16. Redimensionamento em Lote de Imagens

Se você precisa redimensionar imagens em massa, o Python facilita com a biblioteca Pillow.

from PIL import Image
import os
import asyncio
from concurrent.futures import ProcessPoolExecutor

def resize_image(filename, width, height):
    img = Image.open(filename)
    img = img.resize((width, height))
    img.save(f"resized_{filename}")
    return f"Resized {filename}"

async def resize_images(folder_path, width, height):
    with ProcessPoolExecutor() as executor:
        loop = asyncio.get_event_loop()
        tasks = []
        for filename in os.listdir(folder_path):
            if filename.endswith('.jpg'):
                tasks.append(loop.run_in_executor(
                    executor, resize_image, os.path.join(folder_path, filename), width, height))
        results = await asyncio.gather(*tasks)
        print(results)

folder = '/path/to/your/images'
asyncio.run(resize_images(folder, 800, 600))

Este script redimensiona todas as imagens .jpg em uma pasta para as dimensões especificadas.

17. Automatizando o Backup de Dados para a Nuvem

Automatizar backups para serviços de nuvem como o Google Drive é possível com o Python usando bibliotecas como pydrive.

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

def backup_to_google_drive(file_path):
    gauth = GoogleAuth()
    gauth.LocalWebserverAuth()
    drive = GoogleDrive(gauth)
    file = drive.CreateFile({'title': 'backup_file.txt'})
    file.Upload()
    print("Backup uploaded successfully!")

file = '/path/to/your/file.txt' backup_to_google_drive(file)

18. Criando Lembretes Diários

Configurar lembretes diários é fácil com o módulo time, que irá lembrá-lo de beber água a cada 2 horas:

import time

def water_reminder():
    while True:
        print("Time to drink water!")
        time.sleep(7200)  # Remind every 2 hours

water_reminder()

19. Automatizando a Entrada de Dados no Excel

Se você frequentemente insere dados no Excel, o Python pode ajudar a automatizar essa tarefa com a biblioteca openpyxl:

from openpyxl import Workbook

def create_excel(data):
    wb = Workbook()
    ws = wb.active
    for row in data:
        ws.append(row)
    wb.save('data.xlsx')
    print("Excel file created successfully!")

data = [
    ["Name", "Age", "City"],
    ["John", 30, "New York"],
    ["Anna", 25, "London"],
]
create_excel(data)

20. Automatizando a Limpeza de Dados

Se você trabalha com conjuntos de dados grandes, o Python pode automatizar tarefas de limpeza de dados, que irão remover linhas vazias de um arquivo CSV:

import csv

def clean_csv(file_path):
    with open(file_path, 'r') as infile:
        reader = csv.reader(infile)
        rows = [row for row in reader if any(row)]
    
    with open(file_path, 'w', newline='') as outfile:
        writer = csv.writer(outfile)
        writer.writerows(rows)
    
    print("Empty rows removed from CSV")

file = '/path/to/your/data.csv' clean_csv(file)

21. Extração de Texto de Imagens

O Python pode ser usado para extrair texto de imagens usando a biblioteca pytesseract, o que pode ser útil quando você precisa digitalizar conteúdo impresso ou extrair texto de documentos digitalizados.

from PIL import Image
import pytesseract

def extract_text_from_image(image_path):
    # Open the image file
    img = Image.open(image_path)
    
    # Use pytesseract to extract text
    text = pytesseract.image_to_string(img)
    
    return text

image_path = 'path_to_your_image.jpg'
extracted_text = extract_text_from_image(image_path)
print("Extracted Text:\n", extracted_text)
Conclusão

Estes são apenas alguns exemplos do que o Python pode fazer para automatizar suas tarefas diárias. Com sua sintaxe simples e bibliotecas poderosas, o Python pode lidar com quase qualquer tarefa que você lhe apresente.

Seja gerenciando arquivos, enviando e-mails ou gerando relatórios, o Python pode economizar tempo e melhorar sua produtividade. Portanto, comece com a automação em Python hoje e deixe-o lidar com suas tarefas diárias!

Source:
https://www.tecmint.com/python-automation-scripts/