Automatizar procesos con Python: ejemplos para la oficina
Automatizar procesos con Python significa escribir pequeños programas (scripts) que hacen por ti tareas repetitivas: abrir decenas de archivos de Excel y juntarlos, renombrar documentos, leer XML de facturas, generar un reporte y mandarlo por correo. Python es gratuito, funciona en Windows, Mac y Linux, y tiene librerías listas para casi cualquier tarea de oficina. Con la ayuda de una IA para escribir el código, ya no necesitas ser programador para empezar.
Paso 1: instala Python y prepara tu carpeta
- Descarga Python desde python.org. En Windows, marca la casilla “Add python.exe to PATH” durante la instalación.
- Abre una terminal (en Windows: “Símbolo del sistema” o “PowerShell”) y verifica:
python --version
- Crea una carpeta para tu proyecto y un entorno virtual (un espacio aislado para las librerías de ese proyecto):
mkdir automatizaciones
cd automatizaciones
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Mac/Linux:
source .venv/bin/activate
pip install pandas openpyxl
Paso 2: ejemplos de automatizaciones con Python
Juntar muchos Excel en uno solo
Tienes una carpeta con un archivo de ventas por sucursal y quieres uno consolidado:
from pathlib import Path
import pandas as pd
carpeta = Path("ventas")
tablas = []
for archivo in carpeta.glob("*.xlsx"):
df = pd.read_excel(archivo)
df["sucursal"] = archivo.stem # nombre del archivo sin extensión
tablas.append(df)
consolidado = pd.concat(tablas, ignore_index=True)
consolidado.to_excel("consolidado.xlsx", index=False)
print(f"Listo: {len(consolidado)} filas de {len(tablas)} archivos")
Renombrar y ordenar archivos
Mover todos los PDF de “Descargas” a carpetas por mes:
from pathlib import Path
from datetime import datetime
import shutil
origen = Path.home() / "Downloads"
destino = Path("documentos")
for pdf in origen.glob("*.pdf"):
mes = datetime.fromtimestamp(pdf.stat().st_mtime).strftime("%Y-%m")
(destino / mes).mkdir(parents=True, exist_ok=True)
shutil.move(str(pdf), destino / mes / pdf.name)
Leer datos de XML de CFDI
Los CFDI son XML con estructura fija, así que Python los lee sin IA:
from pathlib import Path
import xml.etree.ElementTree as ET
import pandas as pd
filas = []
for xml in Path("cfdi").glob("*.xml"):
raiz = ET.parse(xml).getroot()
# funciona para CFDI 3.3 y 4.0 sin depender del namespace
emisor = next(e for e in raiz if e.tag.endswith("Emisor"))
timbre = next(e for e in raiz.iter() if e.tag.endswith("TimbreFiscalDigital"))
filas.append({
"uuid": timbre.get("UUID"),
"fecha": raiz.get("Fecha"),
"rfc_emisor": emisor.get("Rfc"),
"nombre_emisor": emisor.get("Nombre"),
"total": float(raiz.get("Total")),
})
pd.DataFrame(filas).to_excel("facturas.xlsx", index=False)
Más ideas para facturas en automatizar la descarga de CFDI del SAT.
Mandar un reporte por correo
import smtplib, os
from email.message import EmailMessage
msg = EmailMessage()
msg["Subject"] = "Reporte semanal de ventas"
msg["From"] = "[email protected]"
msg["To"] = "[email protected]"
msg.set_content("Adjunto el reporte consolidado de la semana.")
with open("consolidado.xlsx", "rb") as f:
msg.add_attachment(f.read(), maintype="application",
subtype="octet-stream", filename="consolidado.xlsx")
with smtplib.SMTP_SSL("smtp.tuproveedor.com", 465) as s:
s.login(os.environ["SMTP_USER"], os.environ["SMTP_PASS"])
s.send_message(msg)
Fíjate que la contraseña se lee de una variable de entorno y no está escrita en el código. Si usas Gmail o Outlook, revisa las guías de automatizar correos de Gmail y automatizar correos de Outlook, porque ambos exigen métodos de autenticación específicos.
Paso 3: programa el script para que corra solo
- Windows: abre el Programador de tareas → Crear tarea básica → elige la frecuencia → en “Programa” pon la ruta a
python.exede tu entorno (.venv\Scripts\python.exe) y en “Argumentos” la ruta de tu script. - Mac/Linux: usa
cron. Por ejemplo, todos los lunes a las 8:00:
0 8 * * 1 /ruta/automatizaciones/.venv/bin/python /ruta/automatizaciones/reporte.py
¿Qué proceso conviene automatizar primero?
No todo lo repetitivo vale la pena. Antes de escribir una línea, apunta durante una semana qué tareas haces y cuánto tiempo te llevan. Un buen primer candidato cumple casi todo esto:
- Se repite con frecuencia fija (diario, semanal, cada cierre de mes).
- Sigue reglas claras: si se lo explicaras a alguien nuevo, cabría en una hoja.
- Los datos llegan en formato digital y estable (Excel exportado de un sistema, XML, CSV), no en fotos o PDF escaneados.
- Un error no es catastrófico mientras lo pruebas: un reporte interno es mejor punto de partida que la dispersión de nómina.
Una cuenta rápida ayuda a decidir: si una tarea te toma 30 minutos al día, son más de 10 horas al mes. Si el script te cuesta un par de tardes armarlo y probarlo, se paga solo en semanas. Si la tarea es de una vez al año, probablemente no.
Traer datos de una API o de un sistema web
Muchos procesos empiezan con “entro al sistema, descargo el reporte y lo pego en Excel”. Si ese sistema tiene una API (una puerta para que otros programas pidan datos), Python la consulta directo con la librería requests:
import os, requests, pandas as pd
r = requests.get(
"https://api.tusistema.com/v1/pedidos",
headers={"Authorization": f"Bearer {os.environ['API_TOKEN']}"},
params={"desde": "2026-11-01"},
timeout=30,
)
r.raise_for_status() # detiene el script si la respuesta es un error
pd.DataFrame(r.json()).to_excel("pedidos.xlsx", index=False)
Pregunta a tu proveedor (ERP, punto de venta, CRM, tienda en línea) si tiene API y cómo se obtiene el token. Si no la tiene, la alternativa es automatizar el navegador con herramientas como Playwright, pero es más frágil: cualquier cambio en la página rompe el script. Revisa también que los términos del sistema lo permitan.
Del script en tu laptop a algo en lo que el equipo confíe
El salto que más se subestima es pasar de “lo corro yo cuando me acuerdo” a “corre solo y todos dependen de él”. Revisa estos puntos:
- Dónde corre. Si vive en tu laptop y la cierras, no corre. Para algo diario, usa una computadora que esté siempre encendida o un servidor pequeño.
- Qué pasa cuando falla. Envuelve el proceso en un
try/exceptque mande un correo con el error. Un script que falla en silencio es peor que no tenerlo. - Bitácora. Con el módulo
loggingde Python registra cada ejecución: hora, archivos procesados, filas, errores. - Quién lo mantiene. Deja un archivo con instrucciones: qué hace, de dónde lee, dónde escribe y cómo se reinstala.
Si tu proceso vive mejor en herramientas visuales (correo, formularios, aprobaciones), compara con automatizar procesos con n8n, que permite mezclar nodos visuales con pequeños bloques de código.
Usar IA para escribir tus scripts
Herramientas como ChatGPT, Claude o Gemini escriben scripts como los de arriba si les describes bien la tarea: qué archivos entran, qué columnas tienen y qué debe salir. Reglas para hacerlo seguro:
- Prueba siempre con una copia de tus archivos, nunca con los originales.
- Pide que explique cada parte del código antes de correrlo.
- No pegues contraseñas ni datos de clientes en el chat.
- Si algo falla, copia el error completo y pídele que lo corrija.
Para tareas con Excel en particular, mira automatizar Excel con Python.
Errores comunes
ModuleNotFoundError: No module named 'pandas': no activaste el entorno virtual o no instalaste la librería en él.PermissionError: el archivo está abierto en Excel; ciérralo.- Rutas con espacios o acentos en Windows: usa
Path()en vez de escribir la ruta como texto suelto. - Script que “funciona en mi máquina” pero no en la de otro: documenta las librerías con
pip freeze > requirements.txt.
Cuándo pedir ayuda
Un script para tu propio uso lo puedes armar tú. Si el proceso es crítico (pagos, nómina, facturación), lo usan varias personas o necesita correr en un servidor sin fallar, conviene que alguien lo construya con manejo de errores, bitácora y alertas. En Black Engine escribimos y mantenemos automatizaciones en Python para oficinas y empresas; escríbenos por WhatsApp y vemos tu caso.
Preguntas frecuentes
¿Qué procesos se pueden automatizar con Python?
Manejo de archivos y carpetas, lectura y escritura de Excel y CSV, generación de reportes, envío de correos, descarga de datos de páginas o APIs, y procesamiento de XML como los CFDI.
¿Es difícil aprender Python para automatizar?
Lo básico se aprende en pocas semanas. Además, hoy puedes pedirle a una IA que te escriba el script y tú solo revisarlo y probarlo con copias de tus archivos.
¿Python o Power Automate?
Power Automate es mejor si todo está en Microsoft 365 y no quieres programar. Python es mejor para lógica compleja, archivos grandes y cuando necesitas control total o evitar licencias.
¿Cómo hago que un script de Python corra solo?
En Windows con el Programador de tareas y en Mac o Linux con cron. Para procesos críticos, en un servidor que esté siempre encendido.