我正在寻找有关如何使用 python 读取 GnuCash 文件的信息。我已经读过这个 python-gnucash ,它提供了到 GnuCash 库的 Python 绑定(bind),但目前需要做很多工作(例如依赖项、 header 等)。这些说明是为 Linux 环境和相当旧的 GnuCash 版本 (2.0.x) 量身定制的。我正在运行 GnuCash 2.2.9。虽然我可以操作 Linux 命令行,但我在 Windows XP 上运行 GnuCash。

我的主要目标是 读取 (尚未计划编写)我的 GnuCash 文件,以便我可以使用 matplotlibwxpython 创建我自己的可视化动态报告。我还没有心情学习Scheme。

我希望有人能指出我在这方面的良好开端。就我对 GnuCash 和 Python 的了解,我想有人可能知道以下类型的解决方案:

  • 除了 this one from the GnuCash wiki
  • 之外,最近更新的文档
  • 一些解决方法,比如导出到某种文件格式,有一个更成熟的 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'
    

    10-08 04:45