如何以块的形式读取大型.XLS文件,而无需立即将其加载到RAM中

时间:2018-04-11 09:13:29

标签: python django parsing xls chunking

我尝试解析不同类型的非常大的Excel文件(.csv,.xlsx,.xls)

工作(.csv / .xlsx)流程

.csv 可以使用pandas.read_csv(file, chunksize=chunksize)

进行分块

.xlsx 是可以通过解压缩并使用lxml.etree.iterparse(zip_file.open('xl/worksheets/sheet1.xml'))lxml.etree.iterparse(zip_file.open('xl/sharedStrings.xml'))解析内部.xml文件,然后再执行其他操作来实现的。

不工作(.xls)流程

.xls 我找不到有关如何将这个文件拆分成块的任何信息!

详细信息:我的文件有一种Django的TemporaryUploadedFile。我是通过request.data['file']请求PUT获得的。

我得到的文件路径如request.data['file'].temporary_file_path()。这是'/tmp/tmpu73gux4m.upload'。 (我不确定*****。上传文件是什么。我猜这是某种HTTP文件编码)

当我尝试阅读时:

file.open()
content = file.read()

content看起来像字节字符串b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00...etc.

问题

  1. 是否有任何编码和解析此字节字符串的方法?

  2. 理想情况下,我想逐行读取.xls,而不是立即将整个文件加载到RAM中。有没有办法做到这一点?

0 个答案:

没有答案