zoukankan      html  css  js  c++  java
  • tablib模块

    ####tablib基础知识####
    
    tablib是什么我就不说了,网上一大推,我大概就知道能将数据转为某种格式
    
    1、安装tablib模块
        pip install tablib
    
    2、安装完毕,就在你要使用的py文件中导入就好
        import tablib
    
    3、下面讲讲它的一些基础用法
    
    Dataset对象
    
    创建dataset1,方式一:
    dataset1 = tablib.Dataset()
    dataset1.headers = ['id','name','age','sex']
    dataset1.append(['1','朱宇','21','male'])
    dataset1.append(['2','张昊','22','male'])
    dataset1.append(['1','伍洋','20','male'])
    
    
    创建dataset2,方式二:
    header2 = ['id','name','password']
    data = [
        ['1','杨鹏','123'],
        ['2','代松柏','567'],
    ]
    dataset2 = tablib.Dataset(headers=header2,*data)
    
    ## 这是创建dataset的两种方式,两者都是创建一个头部,再添加一行一行数据
    ## 我把它理解成mysql数据库,大致都一样,这样比较好记忆点。
    ## 方法一,先是实例化出一个空对象,再给headers属性赋值,添加数据
    ## 方式二,在实例化对象的时候,就把数据传了进去
    
    这里你可以打印看看这个创建出来的对象,它在终端是怎样现实的
    
    
    dataset对象创建出来的,下面说说增删查改
    
    # 增加一行数据(拿dataset2举例子)
      dataset2.append(['3','朱宇','123'])
      dataset2.append(['4','何鹏','123'])
    
    注意:调用append方法就可以了,传一个列表,数据必须要和headers想对应,不能多,不能少
    
    # 增加一列数据,增加年龄这列数据(实在原有的基础上额)
      dataset2.append_col((20,21,22,23),'age')
    
    注意:我在添加列之前,dataset2已经有了数据,那么我在添加age这列,必须要为之前每行数据,
         也要添加对应的age的值,所以我在第一个参数传了一个元组(列表也可以),之前数据有多少
         行,你也必须对应传多少个,第二个参数就是你添加列的名字
    
    思考??
        假如我在添加列之前,已经有了几百条,上千条数据了,那你第一个参数是不是也要写这么多啊
    
    解答:我在上面那表的基础再添加一个列(score),记录成绩
        import random
        def get_score(row):
            return random.randint(60,100)
    
        dataset2.append_col(get_score,headers='score')
    
    这样我就无需考虑之前有多少数据了,它会将函数的返回值当作每行添加列score的值
    虽说这样可以解决问题,但是添加数据的精确性不高,所以在设计headers之前,要考虑清楚
    
    # 查看某一行的数据
        dataset2[index]
        这里的index必须是合法,也就是说必须存在于dataset2中
    
    # 获取某一列的数据
        dataset2['score']
        # 这里我获取到了score这一列的所有数据,你拿到该数据也可以进行自己的处理
        dataset2.get_col(index)
        # 这是通过索引去获取,和上面获取某一行是一样的,不同的事,它是用方法
        # 还是注意下,上面的score,和index也是必须要有的
    
    # 删除某行,某列
        del 某行(某列)
        关于删除里面还有其他方法,pop,lpop这些
    
    
    我们在对Dateset对象进行了一些列的操作,最终还是要保存在硬盘中(也就是文件)
    这也是tablib的强大之处,你可以将Dateset对象转换为你想要的格式,保存下来
    
    还是用dataset2举例子
    
    dataset2.json    # 转成json格式
    dataset2.xls     # 转成xls格式
    dataset2.csv    # 转成csv格式
    
    还有其他格式,可以去查询看看,上面这些操作只是转成了某种格式,最后还是要保存下来
    
    with open('zhuyu.csv','wb') as f:
        f.write(dataset2.scv)
    
    
    这只是一些基础用法,想要更加深入了解的话,可以去官网查找看看
    
    
    还有一个差点忘记,Databook,它是ablib下面的一个类
    和上面差不多,首先实例化,传参数
    
    book = tablib.Databook(dataset1,dataset2)
    with open ('c.csv','wb') as f:
        f.write(book.scv)
    
    打开book.scv你会发现下面会有两个sheet,也就是两个文件吧
    
    更新到这里
  • 相关阅读:
    Grove.net实践ORM学习笔记
    COM+的事务
    Delphi中MIDAS线程模型
    Delphi中封装ADO之我重学习记录。。。
    100 多个JaveScript 常用函数
    javascript 事件
    js 收藏
    js 常用函数
    表单11种Input的高级用法
    UltraEdit 使用技巧
  • 原文地址:https://www.cnblogs.com/zhuchunyu/p/10053276.html
Copyright © 2011-2022 走看看