20 scripts de Python para automatizar las tareas cotidianas
Como alguien que ha pasado más de una década en el mundo de la programación, aprendí 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. Si eres programador o alguien que busca facilitar las tareas diarias, Python tiene herramientas que pueden ayudarte.
En este artículo, compartiré 20 scripts de Python que he usado para automatizar varias tareas. Estos scripts son perfectos para cualquiera que quiera ahorrar tiempo y mejorar la eficiencia en su rutina de trabajo.
1. Cambiar el nombre de archivos de forma masiva
Cambiar el nombre de los archivos uno por uno puede ser una tarea que requiere mucho tiempo, pero con Python puedes automatizarlo fácilmente usando el módulo os.
Aquí hay un script simple que cambia el nombre de varios archivos en una carpeta según un patrón determinado:
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 lo reemplaza con new_name_part
.
2. Hacer una copia de seguridad de los archivos automáticamente
Todos sabemos lo importante que es realizar copias de seguridad de los archivos con regularidad, y esta tarea se puede automatizar fácilmente utilizando el módulo shutil
de Python.
Este script copiará todos los archivos de un directorio a otro con fines de copia de seguridad:
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)
Puede programar esta secuencia de comandos para que se ejecute diariamente utilizando herramientas de programación de tareas como cron (Linux) o Programador de tareas (Windows).
3. Descarga de archivos de Internet
Si descarga archivos de Internet con frecuencia, puede automatizar esta tarea utilizando la biblioteca solicitudes
.
Aquí hay un script simple para descargar archivos desde URL:
import requests
def download_file(url, destination_folder):
response = requests.get(url)
if response.status_code == 200:
with open(destination_folder, 'wb') as file:
file.write(response.content)
print(f"Downloaded {url} to {destination_folder}")
else:
print(f"Failed to download {url}")
url = 'https://example.com/file.pdf
' destination = '/path/to/destination/file.pdf
' download_file(url, destination)
Este script descarga el archivo desde la URL especificada y lo guarda en la carpeta especificada.
4. Automatización de informes por correo electrónico
Si necesita enviar informes por correo electrónico con regularidad, puede automatizarlo utilizando la biblioteca smtplib
, que le permite enviar correos electrónicos 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
' 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
')
Este script enviará un correo electrónico simple con asunto y cuerpo a un destinatario específico. 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 realizar fácilmente utilizando la biblioteca schedule
, que le permite automatizar tareas como enviar un correo electrónico o ejecutar un script de respaldo en momentos 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 seguirá ejecutándose y activará tareas a la hora especificada, en este caso, 10:00 a. m. todos los días.
6. Web Scraping para la recopilación de datos
El web scraping es una técnica poderosa para automatizar la recopilación de datos de sitios web, y las bibliotecas BeautifulSoup
y requests
de Python simplifican este proceso.
import requests
from bs4 import BeautifulSoup
def scrape_website(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
data = soup.find_all('h1') # Example: Get all headings
for item in data:
print(item.text)
url = 'https://example.com
' scrape_website(url)
Este script recupera el contenido de una página web e imprime todos los encabezados (etiquetas h1
). Puede ajustarlo para extraer otros tipos de datos.
7. Automatización de publicaciones en redes sociales
Si administra cuentas de redes sociales, puede automatizar la publicación utilizando bibliotecas como Tweepy
(para Twitter) e Instagram-API
(para Instagram) que le permiten publicar automáticamente.
A continuación se muestra un ejemplo que utiliza la biblioteca Tweepy
para publicar un 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 publica un tweet con el mensaje “¡Hola mundo!
” en su cuenta de Twitter.
8. Automatización de la generación de facturas
Si genera facturas con regularidad, puede automatizarlas 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 usar para automatizar el monitoreo del tiempo de actividad del sitio web usando 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 recibe correos electrónicos con frecuencia y desea configurar una respuesta automática, utilice 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
', '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 ') def send_email(subject, body, to_email): sender_email = '[email
' 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 eficaz 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 con una antigüedad superior a un número de días específico utilizando los módulos os
y time
.
import os
import time
def clean_up(folder_path, days_old):
now = time.time()
cutoff_time = now - (days_old * 86400) # 86400 seconds in a day
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
if os.path.getmtime(file_path) < cutoff_time:
os.remove(file_path)
print(f"Deleted {filename}")
folder = '/path/to/your/folder
' clean_up(folder, 30) # Delete files older than 30 days
12. Generar contraseñas automáticamente
Crear contraseñas seguras 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 específica, incorporando letras, dígitos y caracteres especiales para mejorar la seguridad.
import random
import string
def generate_password(length=12):
# Define the character set: letters, digits, and punctuation
characters = string.ascii_letters + string.digits + string.punctuation
# Generate a random password
password = ''.join(random.choice(characters) for _ in range(length))
return password
Example usage: generate a password of 16 characters
password_length = 16
random_password = generate_password(password_length)
print(f"Generated Password: {random_password}")
13. Seguimiento/recordatorio de tareas
La creación de un rastreador de tareas o un sistema de recordatorio en Python se puede lograr utilizando los módulos datetime
y schedule
.
import schedule
import time
from datetime import datetime
def task_reminder(task_name):
print(f"Reminder: {task_name} - {datetime.now()}")
schedule.every().day.at("09:00").do(task_reminder, task_name="Morning Meeting")
while True:
schedule.run_pending()
time.sleep(1)
Este script envía un recordatorio sobre la tarea a una hora programada.
14. Generar informes diarios automáticamente
Automatice los informes diarios utilizando Python para recopilar datos y formatearlos en un informe:
import datetime
def generate_report(data):
today = datetime.date.today()
filename = f"daily_report_{today}.txt"
with open(filename, 'w') as file:
file.write(f"Report for {today}\n")
file.write("\n".join(data))
print(f"Report generated: {filename}")
data = ["Task 1: Completed", "Task 2: Pending", "Task 3: Completed"]
generate_report(data)
15. Monitorear los recursos del sistema
Si es administrador del sistema, puede usar Python para monitorear los recursos de su sistema, como el uso de la CPU y la 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. Cambio de tamaño de imágenes por lotes
Si necesita cambiar el tamaño de las imágenes de forma masiva, Python lo facilita con la biblioteca Pillow
.
from PIL import Image
import os
def resize_images(folder_path, width, height):
for filename in os.listdir(folder_path):
if filename.endswith('.jpg'):
img = Image.open(os.path.join(folder_path, filename))
img = img.resize((width, height))
img.save(os.path.join(folder_path, f"resized_{filename}"))
print(f"Resized {filename}")
folder = '/path/to/your/images
' resize_images(folder, 800, 600)
Este script cambia el tamaño de todas las imágenes .jpg
en una carpeta a las dimensiones especificadas.
17. Automatización de la copia de seguridad de datos en la nube
La automatización de copias de seguridad en servicios en la nube como Google Drive es posible con Python utilizando 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 le recordará que debe 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 la entrada de datos a Excel
Si ingresa datos con frecuencia en Excel, Python puede ayudarlo 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 la limpieza de datos
Si trabaja con conjuntos de datos grandes, 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)
Conclusión
Estos son sólo algunos ejemplos de lo que Python puede hacer para automatizar sus tareas diarias. Con su sintaxis simple y potentes bibliotecas, Python puede manejar casi cualquier tarea que le plantee.
Ya sea que esté administrando archivos, enviando correos electrónicos o generando informes, Python puede ahorrarle tiempo y mejorar su productividad. Entonces, ¡comienza hoy mismo con la automatización de Python y deja que él se encargue de tus tareas diarias!