DeepDiff: La navaja suiza para comparar datos en Python

Publicado el 20 de February de 2026 en Python • Etiquetado con python, data, cli, tools, diff

Cuando trabajamos con datos estructurados en Python, a menudo necesitamos comparar dos diccionarios, JSONs u objetos complejos para encontrar qué ha cambiado. Si bien la comparación directa (==) es útil, a veces necesitamos entender exactamente qué es diferente: qué claves se han añadido, cuáles se han eliminado, o dónde han cambiado …


Seguir leyendo

Shot-scraper: Capturas de pantalla automatizadas para la web

Publicado el 20 de February de 2026 en Python • Etiquetado con python, cli, tools, web, scraping, screenshots

¿Alguna vez has necesitado tomar capturas de pantalla de una página web de forma programática? Tal vez para documentar tu proyecto, monitorizar cambios en una UI, o generar imágenes para redes sociales. Existen muchas formas de hacerlo, pero shot-scraper destaca por su facilidad de uso y potencia.

Creada por Simon …


Seguir leyendo

Pandas Styler: Mejora la presentación de tus DataFrames

Publicado el 25 de December de 2025 en Programación • Etiquetado con pandas, python, data-science, visualizacion, estilo

Descubre cómo el objeto Styler de Pandas te permite aplicar formato condicional y estilos CSS a tus DataFrames para una mejor visualización y presentación de datos.


Seguir leyendo

Reduce el Ruido en tus Logs de Python: Un enfoque inteligente

Publicado el 25 de December de 2025 en Programación • Etiquetado con python, logging, logs, depuracion, desarrollo

Aprende a configurar el módulo logging de Python para evitar la sobrecarga de mensajes de librerías de terceros, manteniendo tus logs limpios y útiles.


Seguir leyendo

Poe the Poet: Automatizando tareas en proyectos Python con uv

Publicado el 25 de December de 2025 en Programación • Etiquetado con python, uv, poethepoet, automatizacion, pyproject.toml

Descubre cómo Poe the Poet te permite definir y ejecutar comandos personalizados directamente desde tu pyproject.toml, optimizando tu flujo de trabajo en entornos uv.


Seguir leyendo

HTTPX: Cliente HTTP moderno para Python

Publicado el 23 de September de 2024 en Programación • Etiquetado con python, http, httpx, async, requests

HTTPX emerge como el sucesor natural de requests, ofreciendo soporte async, HTTP/2 y una API moderna para aplicaciones Python contemporáneas


Seguir leyendo

Una de versiones

Publicado el 01 de May de 2017 en Progamación • Etiquetado con python


Seguir leyendo

Python: Crear generadores repetibles (repeating generators)

Publicado el 09 de February de 2016 en Python • Etiquetado con python, generadores, itertools, decoradores, yield

Técnicas en Python para crear generadores que se pueden iterar múltiples veces, superando la limitación de "una sola vez" de los generadores estándar


Seguir leyendo

Repitiendo una función con hilos

Publicado el 03 de May de 2015 en Programación • Etiquetado con python

Vamos a utilizar hilos en python para ejecutar periodicamente una función


Seguir leyendo

Instalar InSync en Opensuse

Publicado el 20 de April de 2015 en Sistemas • Etiquetado con django, python


Seguir leyendo

Cierra Google Code

Publicado el 13 de March de 2015 en Programación • Etiquetado con python

Lo dicho, Google anunció el cierre de Google Code.

Hoy mismo recibí el correo avisandome (tenía un proyecto de prueba alojado allí) de que podía mover mis proyectos de forma simple a github, el repositorio de facto hoy en día del software libre (lo siento por bitbucket y sobre todo …


Seguir leyendo

Reactivando el blog

Publicado el 20 de February de 2015 en Personal • Etiquetado con python

Ya estoy de nuevo escribiendo.


Seguir leyendo

Decorador vista ajax

Publicado el 21 de November de 2014 en Programación • Etiquetado con python, django

Para obligar que una vista django sea llamada sólo mediante llamamas AJAX.

def ajax_required(f):
    """
    AJAX request required decorator
    use it in your views:

    @ajax_required
    def my_view(request):
        ....

    """
    def wrap(request, *args, **kwargs):
        if not request.is_ajax():
            return HttpResponseBadRequest()
        return f(request, *args, **kwargs)
    wrap.__doc__ = f.__doc__
    wrap.__name__ …

Seguir leyendo

Función genérica para usar como upload_to

Publicado el 11 de October de 2014 en Programación • Etiquetado con django, python

Los FileField en django necesitan ana función upload_to que determine donde se subirá el fichero. Yo suelo tener en utils.py una función genérica que los deja en una subcarpeta con el nombre del modelo.

import os

def generic_upload_to(instance, filename):
    """
    Generic `upload_to` function for models.FileField and models.ImageField …

Seguir leyendo

Django: enlaces en listado de objectos

Publicado el 21 de May de 2014 en Programación • Etiquetado con django, python

En mis proyectos suelo usar enlaces a elementos relacionados en el change_list del admin.

Ficheros

utils.py

Tengo esto en utils.py

from django.contrib import admin
from django.contrib.contenttypes.models import ContentType
from django.core import urlresolvers
from django.utils.datastructures import SortedDict
from …

Seguir leyendo

Settings vars processor

Publicado el 08 de January de 2014 en Programación • Etiquetado con python, django

Lo suelo usar durante el principio de los proyectos.

from django.conf import settings as django_settings
from django.core.exceptions import ImproperlyConfigured


def settings(request):
    """
    Adds the settings specified in settings.TEMPLATE_VISIBLE_SETTINGS to
    the request context.
    """
    new_settings = {}
    for attr in django_settings.TEMPLATE_VISIBLE_SETTINGS:
        try:
            new_settings[attr] = getattr(django_settings, attr)
        except AttributeError …

Seguir leyendo

pyinotify: Ejecutar comando cuando se modifica un fichero

Publicado el 03 de April de 2013 en Sistemas • Etiquetado con python, linux

Ya he comentado por aquí un comando when-changed. Ahora anoto otra alternativa, esta vez python. Se trata de pyinotify. Yo lo uso para generar la documentación de sphinx mientras estoy escribiendo:
python -m pyinotify -r -c "make html" -e IN_MODIFY source

Cambiar de lugar un virtualenv

Publicado el 24 de October de 2012 en Sin Categoría • Etiquetado con python

La opción --relocate no funciona bien. Lo mejor es usar virtualenv-tools.

Un servidor web de bolsillo gracias a python

Publicado el 16 de June de 2009 en Sin Categoría • Etiquetado con python

Otra cosita para recordar. La forma más simple de servir unos ficheros vía web:
python -m SimpleHTTPServer 8080
Nota: Antes usaba:
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
Pero no permite indicar el puerto y es más tedioso de escribir.

Convertir filtros de kmail a filtros sieve

Publicado el 06 de June de 2009 en Sistemas • Etiquetado con python, linux

No hace mucho que dejé de usar POP en mis correos para pasarme al IMAP desconectado de kmail con toda las ventaja que ello supone. Pero todavía seguía utilizando los mismos filtros en kmail que me ordenan los correos por carpeta. Con este sistema el filtrado se realiza una vez …

Seguir leyendo

Cambiar ipython para copiar y pegar luego como doctest

Publicado el 02 de February de 2009 en Sin Categoría • Etiquetado con python

Otra de las ordenes que nunca recuerdo. Estando dentro de ipython para cambiar el prompt de forma que luego sea fácil crear doctests: %doctest_mode Esto entra en  el modo doctest de ipython. También puede ayudar %history -tn para recordar los commandos introducidos previamente.

Compartir ficheros gracias a python

Publicado el 08 de November de 2008 en Sin Categoría • Etiquetado con python

Para compartir de forma rápida unos ficheros vía web graias a python, lo más fácil es:
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"

Error con setuptools y subversion 1.5

Publicado el 14 de September de 2008 en Programación • Etiquetado con python

La actual versión de setuptools no se lleva bien el subversion 1.5 (también el actual en mi ubuntu). Normalmente acostumbro a usar virtualenv y me he encontrado con el error:
NameError: global name 'log' is not defined
Ya está arreglado en el desarrollo de setuptools. Una posible solución es …

Seguir leyendo

Ejecutar comandos en python

Publicado el 04 de March de 2008 en Programación • Etiquetado con python

Hago a menudo pequeños scripts en python. Y muchas de las veces necesito ejecutar algún comando del sistema. Habitualmente importaba el módulo os y llamaba a alguna de sus funciones (las popen). Pero en general no hace falta importar os. Existe un módulo llamado commands (sólo para unix) que permite …

Seguir leyendo

¡Que práctico es python!: svnrevisions.py

Publicado el 10 de April de 2007 en Sin Categoría • Etiquetado con python

Pongo a continuación un script rápido que hice hace ya un tiempo. En ese momento estaba realizando un backport de código y de forma sucia realicé varios
svn up -rTAL
De esa forma y con unos pequeños cambios obtuve el cambio que necesitaba. Pero después de un rato no recordaba …

Seguir leyendo