SGCG

…esto no es un subtítulo…

Ir a: contenido categorías calendario archivo suscripción

Volver arriba

Ejemplos de uso de los bindings de Python de Gnucash (1): renombrado masivo de asientos

2026-07-27

He aprendido a hacer cuatro cosas con los bindings de Python del programa de contabilidad Gnucash. Una cosa que puede hacerse es un renombrado masivo de asientos, que es algo que puede ser útil si queremos enmendar alguna decisión desafortunada a la hora de nombrar los conceptos en nuestra contabilidad doméstica. He aquí unas instrucciones válidas para Gnucash 5 y Python 3 y un programa de ejemplo.

Trabajando con Gnucash 5 en Python 3

Lo que necesitamos para trabajar con un libro de cuentas está en el módulo gnucash. Podemos importarlo así:

import gnucash

Lo primero que hay que hacer es abrir una sesión. Digamos que tenemos un libro de cuentas, contabilidad.gnucash; podemos abrirlo así:

session = gnucash.Session("contabilidad.gnucash") book = session.book root = book.get_root_account()

Así hemos abierto una sesión (session), accedido al libro de cuentas (book) y a la cuenta raíz (root). La sesión puede abrirse así, lo que nos obligará a guardar nuestros cambios (session.save()) y cerrarla (session.end()); de forma alternativa, podemos abrirla como un context manager.

Lo siguiente que hay que hacer es acceder a la cuenta que queremos tocar. Si, por ejemplo, esta cuenta es Gastos.Comida, la seleccionamos así:

account = root.lookup_by_full_name("Gastos.Comida")

Ahora podemos acceder a la cuenta (account) y listar todos los desgloses o splits que le tocan con account.GetSplitList(). A partir de estos desgloses, podemos acceder a los asientos o transacciones que afectan a la cuenta y cambiar las descripciones. Por ejemplo, si queremos corregir una errata en la hemos escrito Pann en vez de Pan, podemos hacer lo siguiente:

for split in account.GetSplitList(): transaction = split.GetParent() if transaction.GetDescription() == "Pann": transaction.SetDescription("Pan")

Finalmente, guardamos y cerramos la sesión:

session.save() session.end()

Programa de ejemplo

He recogido lo expuesto arriba en un pequeño programa: batch_rename_transactions.py

El programa puede usarse directamente como una herramienta de línea de órdenes normal (que muestra la ayuda con la opción --help) o como una función que puede llamarse desde código de Python. Es un poquito más complicado que lo descrito arriba, ya que usa expresiones regulares para hacer el renombrado.


Categorías: Informática

Permalink: https://sgcg.es/articulos/2026/07/27/ejemplos-de-uso-de-los-bindings-de-python-de-gnucash-1-renombrado-masivo-de-asientos/