Accéder à GnuCash en Python
6 janvier 2014
Il existe un module Python pour accéder aux fichiers GnuCash. Cela permet d’analyser vos comptes. Mais ce module est si mal documenté que le plus simple est encore de lire le source du module! Voici donc quelques exemples concrets d’utilisation.
Installer le module sous Ubuntu
sudo apt-get install python-gnucash
Ouvrir un fichier de données et afficher l’arborescence des comptes
#!/usr/bin/python import gnucash FILE = "/chemin/de/mon/fichier/GnuCash" session = gnucash.Session(FILE, ignore_lock=True, is_new=False) book = session.book a_root = book.get_root_account() def atree(a, prefix=''): s = prefix+a.GetName()+'\n' for suba in a.get_children(): suba = gnucash.Account(instance = suba) s += atree(suba, ' '+prefix) return s print atree(a_root) session.end() session.destroy()
Afficher la transaction la plus récente d’un compte, avec ses détails
#!/usr/bin/python import datetime, gnucash FILE = "/chemin/de/mon/fichier/GnuCash" COMPTE = "label du compte dans GnuCash" session = gnucash.Session(FILE, ignore_lock=True, is_new=False) book = session.book a = book.get_root_account().lookup_by_name(COMPTE) end, last = None, None for s in a.GetSplitList(): cur = s.parent.GetDate() if not end or cur > end: end, last = cur, s t = s.parent t_date = datetime.date.fromtimestamp(end).strftime('%d/%m/%Y') target = s.GetOtherSplit().GetAccount().GetName() print "%s %.2f > %s : %s" % (t_date, s.GetAmount().to_double(), target, t.GetDescription()) session.end() session.destroy()