python文件导入导出处理方法整理
1. excel
import:xlrd
-
import xlrd, xlrd可以对xls,xlsx文件进行处理
-
book = xlrd.open_workbook(file_contents=body) # body是文件的二进制流,book是一个对象
table = book.sheets()[0] # book.sheets()获取的是表格的sheet,
table.cell_value(i, 0)获取单元格数据
可对数据进行处理
export:xlsxwriter
-
io.BytesIO() :类文件对象
-
python已经原生为我们准备好了类文件对象(file-like object),这种对象在内存中创建,可以像文件一样被操作。
-
python3中将StringIO和BytesIO都集成到了io模块中
-
内存中的对象有一个标志位的概念,往里面写入,标志位后移到下一个空白处。而读数据的时候是从标志位开始读,所以想要读取前面的数据需要手动将标志位进行移动。
-
(67条消息) python3中StringIO和BytesIO使用方法和使用场景详解_T型人小付的博客-CSDN博客
-
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(),释放内存
-
-
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)