DesarrolloProtección de pagoDetalles
- Los cambios dentro del paquete son gratuitos.
- Si no responde en los 3 días siguientes a la entrega, el trabajo se acepta automáticamente.
El dinero queda reservado al pagar y solo se libera cuando usted acepta el trabajo.

Ejemplo de resultado
Unir los archivos de ventas mensuales de 9 tiendas en un único informe de Excel
Cómo se ejecuta
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Carpeta: sales/2026-10, 9 archivos encontrados
2026-11-02 09:14:03 INFO shop-01.csv: 1.284 filas
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 filas
2026-11-02 09:14:04 WARN shop-07.csv: 3 filas sin precio omitidas (líneas 88, 412, 913)
2026-11-02 09:14:05 INFO Listo: 10.412 filas -> report-2026-10.xlsx (hojas “Ventas” y “Totales”)
Configuración, no código
Los nombres de columna de cada tienda están en settings.ini, así que una tienda nueva o una columna renombrada es una línea ahí:
[columns]
date = Fecha, Fecha de venta, Día
product = Producto, Artículo, Nombre
quantity = Cant., Cantidad, Uds.
price = Precio, Precio unitario
Una parte del código
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Lee el archivo de una tienda y le da los nombres de columna del informe."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: no hay columna para '{name}' (se buscó {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Archivos: un archivo ZIP con merge_sales.py (310 líneas), settings.ini, requirements.txt y un README sobre cómo instalar Python, ejecutar el script y qué significa cada mensaje del registro. El cliente lo ejecuta en su propio ordenador.
Cliente: una pequeña cadena de 9 papelerías; cada tienda envía sus ventas del mes en un archivo CSV o Excel, con nombres de columna ligeramente distintos. Tarea: un único script que lea todos los archivos de una carpeta, dé a las columnas un mismo formato y genere un solo informe de Excel con todas las ventas y una hoja de totales por tienda.
El cliente y todos los datos son ficticios.
Acerca de este servicio
Su servidor web anota cada solicitud en su log de acceso, pero un archivo de millones de líneas dice poco hasta que se cuenta. Este script de Python lee los logs de acceso de Nginx o Apache, incluidos los antiguos comprimidos, y crea un informe: solicitudes por día y hora, las páginas más visitadas, los códigos de estado, las páginas que devuelven 404 o 500 y de dónde llegaron los visitantes. Premium cuenta los rastreadores de buscadores aparte de las personas y guarda un libro de Excel con una pestaña por sección. Las direcciones IP de los visitantes quedan fuera del informe por defecto, o se acortan si las necesita. Envíenos la línea de formato de log de la configuración de su servidor y 20-30 líneas con las direcciones cambiadas. Usted lo ejecuta en su servidor u ordenador; lee los logs y no cambia ninguna configuración.
Qué incluye
- Qué recibeUn archivo ZIP con el script de Python, un README con instrucciones paso a paso y, desde Estándar, un archivo de configuración con las rutas de los logs y las opciones del informe; el código también se muestra en la página del pedido.
- Nginx y ApacheLos formatos de log habituales, o el suyo si es distinto
- Errores con sus páginasQué direcciones dan 404 o 500, y con qué frecuencia
- También logs antiguosDesde Estándar, archivos .gz comprimidos leídos tal cual
- Sin datos personalesDirecciones IP omitidas o acortadas
- Código legibleCon comentarios, fácil añadir una sección más adelante
Cómo funciona
- 1TareaUsted envía el formato de log y unas líneas con las direcciones cambiadas
- 2CódigoEscribimos el script y la guía para ejecutarlo
- 3PruébeloLo ejecuta con una copia del log de un día y revisa el informe
- 4CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error
Qué necesitamos de usted
Su servidor web (Nginx o Apache), la línea log_format o LogFormat de su configuración si se cambió, y 20-30 líneas del log de acceso con las direcciones IP sustituidas por otras inventadas. Dónde se guardan los logs y cómo rotan, qué tamaño tiene el log de un día, qué debe mostrar el informe y en qué formato (CSV o Excel), y dónde se ejecutará: en el propio servidor (con su sistema) o en su ordenador.
Le preguntaremos:
- ¿Qué servidor web y qué formato de log?
- ¿Qué debe mostrar el informe?
- ¿Con qué frecuencia lo necesita?
- ¿Dónde se ejecutará?
Comparar paquetes
| Paquetes | BásicoUn log, un informe16 US$ | EstándarInforme con configuración33 US$ | PremiumHerramienta de informes de logs67 US$ |
|---|---|---|---|
| Plazo | 1 día | 2 días | 3 días |
| Cambios | 1 | 2 | 3 |
| Código | hasta 150 líneas | hasta 400 líneas | hasta 1.000 líneas |
| Archivos de código | 1 | hasta 3 | hasta 8 |
| Archivo de configuración | No | Sí | Sí |
| Mensajes de error claros y registro | No | Sí | Sí |
| Opciones de ejecución y guía para ejecutarlo de forma programada | No | No | Sí |
| Guía de instalación y uso (README) | Sí | Sí | Sí |
| Lenguaje | Python | Python | Python |
| Hacer pedido Básico | Hacer pedido Estándar | Hacer pedido Premium |
Protección de pago
Usted paga al hacer el pedido, pero el dinero solo se libera por un trabajo aceptado.
- Precio fijoEl precio del paquete no cambia después del pago.
- El dinero queda reservadoAl pagar, el importe solo queda reservado. Pasa a Dleex cuando usted acepta el trabajo.
- Revisado antes de la entregaCada resultado pasa un control de calidad antes de llegar a usted, y lo ve en la página del pedido antes de aceptarlo.
- Cambios gratuitosSolicite cambios dentro de su brief tantas veces como permita el paquete.
- Aceptación a los 3 díasSi en los 3 días siguientes a la entrega no acepta el trabajo ni solicita cambios, se acepta automáticamente. Si escribe en el chat del pedido después de la entrega, el pedido queda en espera; cuando le respondamos, podremos reiniciar el plazo de 3 días y se lo indicaremos en el chat.
- Rehacer el trabajo o reembolso totalSi el resultado no se ajusta a su brief y los cambios no lo resolvieron, o el trabajo tarda más del doble de su plazo, escriba en el chat del pedido: rehacemos el trabajo o le reembolsamos el pago íntegro.
Preguntas y respuestas
¿Es lo mismo que la analítica web?
No. Cuenta lo que vio el servidor: cada solicitud, incluidas las de rastreadores y scripts, sin cookies ni código de seguimiento. Las cifras serán distintas de las de su servicio de analítica, y cada visión es útil a su manera.
¿Y las direcciones IP de los visitantes?
Se consideran datos personales en muchos países, así que por defecto el informe las omite. Si las necesita, por ejemplo para ver una dirección que satura la web, pueden acortarse.
¿Puede bloquear visitantes maliciosos?
No. Solo lee logs y crea un informe; no cambia la configuración de su servidor ni su cortafuegos.
¿Leerán ustedes mis logs?
No. Usted ejecuta el script en su lado. Solo necesitamos la línea de formato y unas líneas con las direcciones cambiadas.
¿No encontró su respuesta?


