一个读写ofx文件的框架版本1。
inouk.edofx的Python项目详细描述
详细文档
edofx框架
edofx是一个python框架/dsl,用于操作x 版本1 文件。
除了python标准库之外,edofx没有其他依赖项。
Edofx已经用Python2.5到2.7进行了测试。
还不支持python 3。
此文件的内容
- 许可证
- 安装
- 用法
- 分析ofx文件或字符串
-
检查和操作ofx文件
> UL> - 导航到X树
- [[主页迭代器]]
- 索引器
- 删除节点
- 修改节点
许可证
Edofx是根据麻省理工学院的许可证授权的。参见license.txt
安装
来自PYPI
使用PIP或简易安装:
$ pip install inouk.edofx
or
$ easy_install inouk.edofx
来源于
从正式存储库中复制git,然后使用以下命令安装:
python setup.py install
来自PYPI
使用PIP或简易安装:
$ pip install inouk.edofx or $ easy_install inouk.edofx
来源于
从正式存储库中复制git,然后使用以下命令安装:
python setup.py install
用法
分析ofx文件或字符串
要进行实验,请创建一个virtualenv,安装inouk.edofx,然后启动python并使用:
>>> from inouk import edofx >>> f = open('test/fixtures/multi_account_file.ofx', 'U') # Files must be opened using 'U' mode as the parser do not manage \r\n EOL >>> OFX = edofx.OFXParser(f.read()).parse() >>> OFX <OFX>...</OFX>
ofx现在包含了ofxnode的test/fixtures/multi_account_file.ofx树表示。
检查和操作ofx树
要浏览OfX树,请使用:
>>> OFX.children [<SIGNONMSGSRSV1>...</SIGNONMSGSRSV1>, <BANKMSGSRSV1>...</BANKMSGSRSV1>, <CREDITCARDMSGSRSV1>...</CREDITCARDMSGSRSV1>] >>> OFX.SIGNONMSGSRSV1.children [<SONRS>...</SONRS>] >>> OFX.SIGNONMSGSRSV1.SONRS.children [<STATUS>...</STATUS>, <DTSERVER>20100305094649, <LANGUAGE>FRA] >>> OFX.SIGNONMSGSRSV1.SONRS.DTSERVER <DTSERVER>20100305094649 >>> OFX.SIGNONMSGSRSV1.SONRS.DTSERVER.value '20100305094649' # This is the raw value as a string >>> OFX.SIGNONMSGSRSV1.SONRS.DTSERVER.val # returns date or float when appropriate datetime.date(2010, 3, 5)
迭代器正常:
>>> # To list account numbers present in file >>> for account in OFX.BANKMSGSRSV1.STMTTRNRS: ... print 'account #', account.TRNUID.val ... account # 34995678052 account # 85576218690 account # 44498008728 account # 42025380697 account # 62631064788
索引器正常:
>>> OFX.BANKMSGSRSV1.STMTTRNRS[2].TRNUID.val '44498008728' >>> len(OFX.BANKMSGSRSV1.STMTTRNRS) 5
修改节点
删除节点:
>>> OFX.children [<SIGNONMSGSRSV1>...</SIGNONMSGSRSV1>, <BANKMSGSRSV1>...</BANKMSGSRSV1>, <CREDITCARDMSGSRSV1>...</CREDITCARDMSGSRSV1>] >>> del OFX.CREDITCARDMSGSRSV1 # Warning does not work (yet) on indexed items >>> OFX.children [<SIGNONMSGSRSV1>...</SIGNONMSGSRSV1>, <BANKMSGSRSV1>...</BANKMSGSRSV1>]
修改节点:
为此,必须让".value"带有字符串。 请注意,.val'属性(尚未)可写。
>>> OFX.SIGNONMSGSRSV1.SONRS.LANGUAGE <LANGUAGE>FRA >>> OFX.SIGNONMSGSRSV1.SONRS.LANGUAGE.value = 'Italian' >>> OFX.SIGNONMSGSRSV1.SONRS.LANGUAGE <LANGUAGE>Italian >>>
要更改树结构:
>>> OFX.SIGNONMSGSRSV1.SONRS.children.append(edofx.OFXNode(name='COLOR', value='blue')) # insert is ok too >>> OFX.SIGNONMSGSRSV1.SONRS.children [<STATUS>...</STATUS>, <DTSERVER>20100305094649, <LANGUAGE>Italian, <COLOR>blue]
ofx树显示和导出
ofxnode支持3种输出/转储格式:
- ofx;在树/节点修改后作为ofx重新导出
- xml;易于阅读
- 模糊不清;从x重新导出,所有敏感信息都被干扰。
重要信息 :节点"accttype"、"code"、"status"、"severity"、"language"、"curdef"、"trntype"未被混淆。
示例
$ pip install inouk.edofx or $ easy_install inouk.edofx0
$ pip install inouk.edofx or $ easy_install inouk.edofx1
$ pip install inouk.edofx or $ easy_install inouk.edofx2
共x个标题
OFX标题可用作dict。
标题可以通过两种方式解析:
- 如果已调用parse(),则可以使用parser对象的x_headers属性检索它们。
- ofxparser可以使用parse_Headers()方法(例如test_01_Parser.py的测试7、8和9)仅解析头(而不是内容)。
包装说明
此软件包包含:
- edofx/\u init.py;框架
-
测试;包含python单元测试类
> UL> - edofx_integration.py;演示如何将ofx源解析为特定类的示例。
edofx/初始py
框架本身分为三类:
- ofx节点
- ofxparser
- Ofxobfuscator
使用python帮助进行方法级描述。(即使我对python帮助的内容质量略感乐观……)
ofxnode用于存储解析的ofx源。
爆炸物
ofxparser从包含一些ofx内容的字符串构建xnode树。
ofxobfuscator是一个基于词法分析的天真的混淆器。 ofxobfuscator能够混淆ofx源的xparser已经无法解析。 如果您想发送一些xparser无法处理的x文件,请使用此选项。
测试
在这里您将找到3个示例和一些单元测试:
- edofx_integration.py(见下文)
- edofx2csv.py;演示如何在中将andofx文件导出到csv
- ofxplode.py;演示如何从多帐户文件生成单个帐户的ofx文件
- 单元测试
edofx_integration.py
此文件显示如何将多帐户类型/多帐户ofx文件解析为语句和语句事务类,并将所有内容导出为一组每个帐户的csv文件。
最有趣的部分是render_as_dot()函数。
下面的render_as_dot()代码片段演示了ofxnode如何使将ofx内容轻松加载到任意python对象中:
$ pip install inouk.edofx or $ easy_install inouk.edofx3
edofx2csv.py
演示如何将edofx文件导出为csv格式。
采用多帐户ofx文件并生成:
- X文件的单个帐户
- 单个ofx文件的xml表示形式
单元测试
- 解析器测试(test_01_parser.py)
- ofxtree导出测试(test_02_of xnode_export.py)
- 混淆测试(test_03_obfusation.py)
目录测试/fixtures包含一组ofx file.real_file.ofx和multi_account_file.ofx是使用ofxnode.obfuscated_of x_repr()从实际文件生成的
免责声明:edofx是我的第一个python代码!!我今天不会写这么多东西。