用于读/写CFONB文件的纯Python库,派生自https://github.com/akretion/pythoncfonb

python-cfonb的Python项目详细描述


简介

CFONB格式是旧文件格式 对于银行交换,由CFONB(Comitéfrançais d'Organization et 去标准化银行)。它至今仍用于检索银行对账单 或下达转移单。格式规范可以在CFONB website上找到。在

  • 导入方法应读取类似文件的对象(使用IOString或真正的纯文本文件)
  • 导出CFO文件中Python对象的export方法
  • 符合银行规范的格式检查程序:特殊字符、必填字段等

前两个用例是:读取银行对账单,并生成转账单

安装

>>> pip install python-cfonb

语句分析器

你可以读到这样的陈述:

>>> from os.path import join
>>> statement_file = open(join('cfonb', 'tests', 'bank_statement.cfo'))
>>> from cfonb import StatementReader
>>> reader = StatementReader()
>>> result = reader.parse(statement_file)
>>> statement = result[0]

语句有页眉和页脚,这两个行都是语句行:

^{pr2}$

行可以作为列表读取:

>>> statement.header.as_list()
['01', '30002', '    ', '00447', ...]

或者作为一个口述:

>>> statement.header.as_dict()
{'bank_code': '30002', 'nb_of_dec': ' ', '_5': ...}

或者作为一个对象:

>>> header = statement.header.as_obj()
>>> header.bank_code
'30002'

页眉和页脚之间的语句行可以迭代:

>>> # TODO: use an interator, and hide the parse_amount in the object
>>> from cfonb.parser.common import parse_amount
>>> for line in statement.lines:
...     l = line.as_obj()
...     print parse_amount(l.amount, l.nb_of_dec)
-2000.0
-1000.0
4000.0
-3000.0

转写器

准备内容:

>>> from datetime import datetime
>>> from cfonb.writer.transfert import Transfert
>>> transfert = Transfert()
>>> transfert.setEmeteurInfos('2000121','bigbrother','virement de test',503103,2313033,1212,datetime(2011,11,27))
<cfonb.writer.transfert.Transfert instance at ...>
>>> transfert.add('un test','littlebrother','credit agricole ile de france',50011,6565329000,100,'un peu d\'argent',6335)
<cfonb.writer.transfert.Transfert instance at ...>
>>> content = transfert.render()

可以将文件名与render方法一起使用:

>>> transfert.render(filename='./virement.cfonb')
"0302        200012      ..."

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java不兼容类型:MainActivity无法转换为LifecycleOwner   java安卓是一种更有效的读取大文本文件的方法   java导出LWJGL本地人与项目?(IntelliJ IDEA)   JDK更新后,JavaJShell不再在下一行打印输出   父类对象上的继承Java比较子属性   Java:有没有一个容器可以有效地结合HashMap和ArrayList?   安卓 Java对象指针   java在annotationdriven Spring MVC应用程序中实现大气   java 安卓源代码构建应用找不到安卓supportv4。罐子   文件系统上的抽象层和Java中的jar/zip   java在水平滚动视图中添加多个图像?   java如何从firebase实时数据库中获取字符串数组   WIndows 10工作站上的java未满足链接错误   java命令在终端中工作,但在使用过程中出现“无结束引号”错误。执行官