21 Scripts de Python Sencillos Que Automatizarán Tus Tareas Diarias

Como alguien que ha pasado más de una década en el mundo de la programación, he aprendido que automatizar tareas repetitivas puede ahorrar una cantidad significativa de tiempo y esfuerzo.

Python, con su sintaxis simple y potentes bibliotecas, es uno de los mejores lenguajes de programación para crear scripts de automatización. Ya sea que seas un programador o alguien que busca facilitar las tareas diarias, Python tiene herramientas que pueden ayudarte.

En este artículo, compartiré 21 scripts de Python que he utilizado para automatizar diversas tareas. Estos scripts son perfectos para cualquiera que quiera ahorrar tiempo y mejorar la eficiencia en su rutina de trabajo.

1. Renombrar Archivos en Masa

Renombrar archivos uno por uno puede ser una tarea que consume mucho tiempo, pero con Python, puedes automatizar esto fácilmente usando el módulo os.

Aquí tienes un script simple que renombra múltiples archivos en una carpeta basado en un patrón 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 busca archivos que contengan old_name_part en sus nombres y los reemplaza con new_name_part.

2. Respaldar Archivos Automáticamente

Todos sabemos lo importante que es respaldar archivos regularmente, y esta tarea se puede automatizar fácilmente usando el módulo shutil de Python.

Este script copiará todos los archivos de un directorio a otro con fines de respaldo:

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)

Puedes programar este script para que se ejecute diariamente utilizando herramientas de programación de tareas como cron (Linux) o Task Scheduler (Windows).

3. Descarga de Archivos de Internet

Si frecuentemente descargas archivos de internet, puedes automatizar esta tarea utilizando la biblioteca aiohttp.

Aquí tienes un script simple para descargar archivos desde 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 descarga el archivo de la URL especificada y lo guarda en tu carpeta designada.

4. Automatización de Informes por Correo Electrónico

Si necesitas enviar informes por correo electrónico regularmente, puedes automatizarlo utilizando la biblioteca smtplib, que te permite enviar correos desde una cuenta de Gmail fácilmente:

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á un correo simple con un asunto y cuerpo a un destinatario especificado. Asegúrate de habilitar aplicaciones menos seguras en Gmail si utilizas este método.

5. Programador de Tareas (Automatización de Tareas)

La programación de tareas se puede hacer fácilmente utilizando la biblioteca schedule, que te permite automatizar tareas como enviar un correo electrónico o ejecutar un script de respaldo a horas específicas:

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 seguirá ejecutándose y activará tareas a la hora especificada, en este caso, 10:00 AM todos los días.

6. Web Scraping para Recolección de Datos

Usar aiohttp para solicitudes HTTP asíncronas en lugar de la biblioteca síncrona requests puede hacer que el web scraping sea más eficiente.

Este ejemplo recupera varias páginas en 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. Automatización de Publicaciones en Redes Sociales

Si gestionas cuentas en redes sociales, puedes automatizar las publicaciones utilizando bibliotecas como Tweepy (para Twitter) y Instagram-API (para Instagram) que te permiten publicar automáticamente.

A continuación se muestra un ejemplo utilizando la biblioteca Tweepy para publicar un tuit:

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 publica un tuit con el mensaje “¡Hola, mundo!” en tu cuenta de Twitter.

8. Automatización de Generación de Facturas

Si generas facturas regularmente, puedes automatizarlo utilizando bibliotecas como Fpdf, que creará facturas en 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 crea una factura simple y la guarda como PDF.

9. Monitoreo del Tiempo de Actividad del Sitio Web

Python se puede utilizar para automatizar el monitoreo del tiempo de actividad del sitio web utilizando la biblioteca requests, que puede verificar periódicamente si un sitio web está en línea o no:

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 si el sitio web está en línea e imprime el código de estado.

10. Respuesta Automática a Correos Electrónicos

Si a menudo recibes correos electrónicos y deseas configurar una respuesta automática, utiliza las bibliotecas imaplib y smtplib para responder automáticamente a los correos electrónicos:

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 automáticamente a los correos electrónicos no leídos con un mensaje predefinido.

11. Limpieza de Archivos

Python proporciona una forma efectiva de automatizar la limpieza de archivos, especialmente para eliminar o mover archivos antiguos para mantener directorios organizados.

A continuación se muestra un script simple que elimina archivos más antiguos que un número especificado de días utilizando los módulos os y 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. Generar Contraseñas Automáticamente

Crear contraseñas fuertes y únicas es esencial para la seguridad, y Python puede ayudar a automatizar este proceso utilizando el módulo random.

A continuación se muestra un script simple que genera contraseñas aleatorias de una longitud especificada, incorporando letras, dígitos y caracteres especiales para mejorar la seguridad.

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. Seguimiento de Tareas/Recordatorio

Crear un sistema de seguimiento de tareas o recordatorios en Python se puede lograr utilizando los módulos datetime y 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 envía un recordatorio sobre la tarea en un horario programado.

14. Auto-Generar Informes Diarios

Automatice los informes diarios utilizando Python para recopilar datos y formatearlos en un informe:

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. Monitorear Recursos del Sistema

Si eres un administrador de sistemas, puedes utilizar Python para monitorear los recursos de tu sistema como uso de CPU y memoria, con la ayuda de la 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. Cambiar el Tamaño de Imágenes por Lote

Si necesitas cambiar el tamaño de imágenes en masa, Python lo hace fácil con la 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 las imágenes .jpg en una carpeta a las dimensiones especificadas.

17. Automatización de Copias de Seguridad en la Nube

Automatizar copias de seguridad en servicios en la nube como Google Drive es posible con 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. Crear Recordatorios Diarios

Configurar recordatorios diarios es fácil con el módulo time, que te recordará beber agua 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. Automatización de Entrada de Datos en Excel

Si frecuentemente ingresas datos en Excel, Python puede ayudar a automatizar esta tarea con la 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. Automatización de Limpieza de Datos

Si trabajas con grandes conjuntos de datos, Python puede automatizar tareas de limpieza de datos, lo que eliminará filas vacías de un archivo 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. Extracción de Texto de Imágenes

Python puede ser usado para extraer texto de imágenes usando la biblioteca pytesseract, lo cual puede ser útil cuando necesitas digitalizar contenido impreso o extraer texto de documentos escaneados.

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)
Conclusión

Estos son solo algunos ejemplos de lo que Python puede hacer para automatizar tus tareas diarias. Con su sintaxis simple y poderosas bibliotecas, Python puede manejar casi cualquier tarea que le propongas.

Ya sea que estés gestionando archivos, enviando correos electrónicos o generando informes, Python puede ahorrarte tiempo y mejorar tu productividad. ¡Así que comienza con la automatización en Python hoy mismo y deja que se encargue de tus tareas diarias!

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