我正在寻找有关如何使用 python 读取 GnuCash 文件的信息。我已经读过这个 python-gnucash
,它提供了到 GnuCash 库的 Python 绑定(bind),但目前需要做很多工作(例如依赖项、 header 等)。这些说明是为 Linux 环境和相当旧的 GnuCash 版本 (2.0.x) 量身定制的。我正在运行 GnuCash 2.2.9。虽然我可以操作 Linux 命令行,但我在 Windows XP 上运行 GnuCash。
我的主要目标是 读取 (尚未计划编写)我的 GnuCash 文件,以便我可以使用 matplotlib
和 wxpython
创建我自己的可视化动态报告。我还没有心情学习Scheme。
我希望有人能指出我在这方面的良好开端。就我对 GnuCash 和 Python 的了解,我想有人可能知道以下类型的解决方案:
除了上面提到的那些,你们可能还有更好的建议。
最佳答案
你说的是数据文件吗?从那里 wiki ,看起来它们只是压缩的 XML 文件。使用 Python,您可以使用 gzip module 解压缩它们,然后使用任何 available XML parsers 解析它们。
ElementTree 示例
>>> import xml.etree.cElementTree as ET
>>> xmlStr = '''<?xml version="1.0" encoding="UTF-8" ?>
<painting>
<img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/>
<caption>This is Raphael's "Foligno" Madonna, painted in
<date>1511</date>?<date>1512</date>.
</caption>
</painting>
'''
>>> tree = ET.fromstring(xmlStr) #use parse or iterparse to read direct from file path
>>> tree.getchildren()
[<Element 'img' at 0x115efc0>, <Element 'caption' at 0x1173090>]
>>> tree.getchildren()[1].text
'This is Raphael\'s "Foligno" Madonna, painted in\n '
>>> tree.getchildren()[0].get('src')
'madonna.jpg'