首页 > 代码库 > tablib源代码学习

tablib源代码学习

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使用多种表格格式的支持库,导出和导入文件,对数据表内容提供统一的操作接口。文件组织非常有条理,方便扩展,文档充足。




来自为知笔记(Wiz)