Я пытаюсь создать лямбда-функцию AWS, которая принимает загружаемый файл и затем анализирует его в памяти. Этот файл представляет собой файл xlsx, и его содержимое поступает в функцию лямбда, которая выглядит следующим образом: клавиша body
в event
:
Начало:
----------------------------300017151060007960655534
Content-Disposition: form-data; name="tag_list"; filename="test-list.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
PK
�y�N docProps/PK
И конец строки выглядит так:
[Content_Types].xmlPK�;
----------------------------475068475306850797919587--
Если я выполняю заголовок / фактический файл на моем компьютере, кажется, что файл начинается с PK
и заканчивается на xmlPK�;
. Я попытался вырезать этот раздел и создать объект BytesIO
или SpooledTemporaryFile
, но ни один из этих параметров не работает. Все они дают мне что-то вроде неправильной позиции поиска или ошибок в zip-файле.
Моя цель - загрузить этот файл xlsx в память и затем проанализировать его, используя openpyxl
.
Моя текущая функция выглядит примерно так в настоящее время. Я продолжаю пытаться отформатировать это по-другому, иногда я декодирую это, иногда нет.
def lambda_handler(event, context):
file_index = event['body'].index('PK')
file_string = event['body'][file_index:]
file_end = file_string.index(';')
file = file_string[:file_end].encode('utf-8')
Затем я пытаюсь передать строку file
в BytesIO
или SpooledTemporaryFile
, но все они дают мне ошибки ...
Обратите внимание, я не хочу использовать S3.