python文件导入导出处理方法整理

1. excel

import:xlrd

  1. import xlrd, xlrd可以对xls,xlsx文件进行处理

  2. book = xlrd.open_workbook(file_contents=body) # body是文件的二进制流,book是一个对象

    table = book.sheets()[0] # book.sheets()获取的是表格的sheet,

    table.cell_value(i, 0)获取单元格数据

    可对数据进行处理

export:xlsxwriter

  1. io.BytesIO() :类文件对象

  2. python已经原生为我们准备好了类文件对象(file-like object),这种对象在内存中创建,可以像文件一样被操作

  3. python3中将StringIO和BytesIO都集成到了io模块中

  4. 内存中的对象有一个标志位的概念,往里面写入,标志位后移到下一个空白处。而读数据的时候是从标志位开始读,所以想要读取前面的数据需要手动将标志位进行移动。

  5. (67条消息) python3中StringIO和BytesIO使用方法和使用场景详解_T型人小付的博客-CSDN博客

    1. BytesIO真正实用的地方还是在于存储图片视频等数据,不管是本地生成的还是网络下载的。

      因为是Bytes类型的,就可以直接保存到BytesIO中

      想要对图片进一步处理这里使用Python3的Pillow库,

      s = StringIO()
      s.write('line1\nline2\nline3')
      print(s.read()) --> '',write后标志位在最后一位,read时候往后读,是空数据
      print(s.getvalue()) -->'line1\nline2\nline3'
      s.seek(0) 指针指向0
      print(s.read()) -->'line1\nline2\nline3'
      s.seek(0)
      print(s.readline()) -->'line1',按行读取
      s.close(),释放内存
      
  6. from xlsxwriter import Workbook, workbook = Workbook(io.BytesIO())添加sheet,sheet.write(row,col,value),最后workbook.close()

2. tablib库

对数据进行转换,表格数据

def export_excel():
    header = [str(i) for i in range(1, 5)]
    data = ['111', '222', '333', '444']
    data_ = []
    for i in header:
        data_.append(data)
    dst = tablib.Dataset(*data_,headers=header)
    print(dst.json)
    print(dst.export('json'))
    print(dst.xlsx)  # 二进制
    print(dst.export('csv'))
    print(dst[0])
    # with open('output.xlsx', mode='wb') as outfile:  # 写入数据
    #     outfile.write(dst.xlsx)

    with open("output.xlsx", "rb") as r:
        data = tablib.Dataset().load(r)  # 读取数据
        print(data.headers)
        print(data._data)
        print(data)

3. pandas