zoukankan      html  css  js  c++  java
  • 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/

    动机

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






  • 相关阅读:
    Codeforces Round #368 Div. 2
    TXT文件去除多余空行
    #4247. 串
    #4322. 字符串游戏(strgame)
    #4214. 谢特
    #4155. 咱们去烧菜吧
    #4350. 「十二省联考 2019」字符串问题
    #4349. 「十二省联考 2019」异或粽子
    #4303. 跳蚤
    #4302. 魔法咒语
  • 原文地址:https://www.cnblogs.com/hustlijian/p/3782525.html
Copyright © 2011-2022 走看看