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/


动机

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


tablib源代码学习的更多相关文章

  1. struts2源代码学习之初始化(一)

    看struts2源代码已有一段时日,从今天開始,就做一个总结吧. 首先,先看看怎么调试struts2源代码吧,主要是下面步骤: 使用Myeclipse创建一个webproject 导入struts2须 ...

  2. [Java] LinkedList / Queue - 源代码学习笔记

    简单地画了下 LinkedList 的继承关系,如下图.只是画了关注的部分,并不是完整的关系图.本博文涉及的是 Queue, Deque, LinkedList 的源代码阅读笔记.关于 List 接口 ...

  3. 开源中国安卓client源代码学习(一) 渐变启动界面

    开源中国安卓client源代码学习(一) 渐变启动界面 准备学习安卓开发, 看到网上有人推荐开源中国安卓client的源代码, 说里面包括了大部分技术, 于是准备好好研究研究. 特开通此系列博客来记录 ...

  4. 读Flask源代码学习Python--config原理

    读Flask源代码学习Python--config原理 个人学习笔记,水平有限.如果理解错误的地方,请大家指出来,谢谢!第一次写文章,发现好累--!. 起因   莫名其妙在第一份工作中使用了从来没有接 ...

  5. nginx源代码学习资源(不断更新)

    nginx源代码学习是一个痛苦又快乐的过程,以下列出了一些nginx的学习资源. 首先要做的当然是下载一份nginx源代码,能够从nginx官方站点下载一份最新的. 看了nginx源代码,发现这是一份 ...

  6. JDK源代码学习系列07----Stack

                                                                   JDK源代码学习系列07----Stack 1.Stack源代码很easy ...

  7. djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习

    Django REST framework JWT djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习 SECRET_KEY = '1)q(f8jrz^edwtr2 ...

  8. JDK源代码学习系列04----ArrayList

                                                                             JDK源代码学习系列04----ArrayList 1 ...

  9. PetaPoco源代码学习--0.目录贴

    2017年3季度后,以人力外包的形式派驻到甲方单位进行项目救急时,接触到了甲方单位的ASP.NET MVC项目的ORM框架,它以PetaPoco(2012年的老版本)进行改造升级的,当初就想学习一下这 ...

随机推荐

  1. 关于相对路径和绝对路径及cd命令的使用

    cd (change directory) 目录    跳转到指定目录下 路径定义分为两种:绝对路径(absolute)和相对路径(relative) 绝对路径:从根目录(/)开始写去的文件名或目录名 ...

  2. 使用Hibernate框架技术时,对项目进行的配置

    1.在需要使用Hibernate框架技术的项目上单击鼠标右键,在弹出的菜单中选择MyEclipse-->Add Hibernate Capabilities,打开Add Hibernate Ca ...

  3. CF Spreadsheets (数学)

    Spreadsheets time limit per test 10 seconds memory limit per test 64 megabytes input standard input ...

  4. 显示创建一个表的SQL语句

    显示创建数据库中包的语句,从而可以方便的对表的结构进行修改和复制(当然还有其他的方式) 显示表结构: 显示创建表语句: show create table tablename;

  5. (转)linuxmint,ubuntu 下修改guake宽度方法

    之前在网上找到修改guake.py的方式,但是我一直没能找到guake.py的文件,弄的我纠结,后来找到这个文章,这个确实是有效果的 Ubuntu12.04上Guake在唤出的时候滚动条会消失,主要原 ...

  6. 关于System.Collections空间

    System.Collections命名空间包含可使用的集合类和相关的接口,提供了集合的基本功能. 该命名空间下的.NET非泛型集合类如下所示: — System.Collections.ArrayL ...

  7. java源码研究--List中的set和add方法区别

    在处理一道题目是,发现他们使用了List 中的set 方法,这个方法我平时很少用到,今天来研究一下,set和add的区别 add(int index,Object obj)方法与set(int ind ...

  8. 让.NET程序会说话

    在开发过程中需要用到让程序自动播放语音,如果是一个一个录则太麻烦了,在开发过程中发现.NET已经自带了该功能 Type type = Type.GetTypeFromProgID("SAPI ...

  9. 关于remote访问中的flex端配置问题

    刚刚开始使用blazeds可能会有个疑问.tomcat服务器是必须配置的吗?如果前台后台分开,怎么开发. 其实服务器不是必须配置的,配置了那个服务器,就会在“附加编译参数”加入这样一句: -servi ...

  10. vim ctags 的使用

    ubantu 先安装 sudo apt-get install ctags 『基本功能使用方法』常用命令列表:        1.  $ ctags –R *      ($ 为Linux系统Shel ...