Я пытаюсь анализировать различные типы очень больших файлов Excel (.csv, .xlsx, .xls)
Рабочие (.csv/.xlsx) потоки
.csv можно разбить на фрагменты с помощью pandas.read_csv(file, chunksize=chunksize)
.xlsx можно разбить на фрагменты, разархивировав его и проанализировав внутренние файлы .xml с помощью lxml.etree.iterparse(zip_file.open('xl/worksheets/sheet1.xml'))
и lxml.etree.iterparse(zip_file.open('xl/sharedStrings.xml'))
, после чего выполняя дополнительные операции.
Не работает (.xls) поток
.xls Я не могу найти информацию о том, как разделить этот файл на части!
Подробности: мой файл имеет тип Django TemporaryUploadedFile
. Я получаю его от request.data['file']
по запросу PUT
.
Я получаю путь к файлу, например request.data['file'].temporary_file_path()
. Это «/tmp/tmpu73gux4m.upload». (Я не уверен, что такое файл *****.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.
Вопрос
Существуют ли какие-либо средства кодирования и анализа этой строки байтов?
В идеале я хотел бы читать .xls построчно, не загружая сразу весь файл в ОЗУ. Есть ли какие-нибудь средства сделать это?
.xls
файлов. Нет возможности сообщить им о преобразовании их файлов в.csv
. Конечно, это был бы лучший вариант для меня, но это невозможно. - person Eugene Kovalev   schedule 11.04.2018.xlsx
. Мне нужна информация о.xls
- person Eugene Kovalev   schedule 11.04.2018