tablib简介
-----------
Tablib is a format-agnostic tabular dataset library, written in
Python.
Tablib 是一个格式未知的表格操作库,使用python编写,目前(2014-06-11)支持如下格式:Excel
、JSON 、YAML 、HTML、TSV 、CSV的导入/导出,及修改操作。实现方法是使用各种数据格式的python支持库(大多是各种格式的有明支持库)导入数据成list(列表,python
内置数据结构),每个list的成员就是数据表的一行(建立一个类Row)。对数据的操作就转化成对list和Row的操作。导出时,导出时又使用各库封闭的导出接口就可以了。
官网:http://docs.python-tablib.org/en/latest/
源代码:https://github.com/kennethreitz/tablib
动机
-----------
学习优秀python库开源组织方式,学习优秀python代码编码规范和技巧。
主要模块
-----------
1. docs
使用类markdown的简单文档格式reStructText,通过Sphinx工作,可以生成html,pdf,epub,text等格式,python很多库都是这么组织其文档的。
2. setup.py
python库通用文件,tablib使用相关的操作,实现了python2.5--3.4的兼容工作。
3. tablib/compat.py
tablib库中处理兼容相关的文件,通过到python版本的测试,提供兼容的调用模块。
4. tablib/core.py
是tablib库中的核心文件,提供了重要的类如Row, Dataset, Databook,及初始化函数。
Row是表格中行数据的类,提供了tag(标签),和row(行数据),都是用list保存,提供了行的操作接口。
所有的行操作都是封装了list的操作。
Dataset就是一个数据表,保存了多个
Row(行),也可以加一个headers(表头),都用list保存。Dateset中提供了数据的操作接口。
Databook就类似一个数据库,可以有多张表,也类似excel中可以有多个datasheet,使用list保存,每项就是一个Dataset。
detect(stream)函数,遍历支持的格式,使用对应格式封装的detect()接口测试文件的类型,返回一个元组:(format,
stream)。format是格式对应的类,stream是文件流。
import_set(stream),import_book(stream),先使用detect测试数据流类似,再用返回的类型做对应的导入操作。
5. tablib/formats目录
目录下定义了支持的文件格式:
每种格式使用一个文件定义其封装的package库(下面会介绍),提供了三个tablib/core.py中调用的函数接口,detect,import_set,
import_book.
6. tablib/packages
tablib使用的各种格式文件的支持库:
这些库都是一些现在的成熟的库。
总结
---------
tablib使用多种表格格式的支持库,导出和导入文件,对数据表内容提供统一的操作接口。文件组织非常有条理,方便扩展,文档充足。