Как прочитать zipfile из байтов в Python 3.x? - PullRequest
0 голосов
/ 22 ноября 2018

Я читаю gzip-файл из байтов, которые я загрузил из AWS S3, сейчас я попробовал следующий код для чтения:

gzip_bytes = s3.get_file()  # for example I have loaded S3
gzip_file = BytesIO(gzip_bytes)

with GzipFile(gzip_file, mode="rb") as file:
     # Todo somthing

У меня ошибка ниже:

Traceback (most recent call last):
    ...
    with GzipFile(BytesIO(pre_file_bytes), mode="rb") as pre_zip_file:
  File "/usr/lib/python3.6/gzip.py", line 163, in __init__
    fileobj = self.myfileobj = builtins.open(filename, mode or 'rb')
TypeError: expected str, bytes or os.PathLike object, not _io.BytesIO

Как я могу решить эту проблему?Или, может быть, я что-то упускаю

Большое спасибо

1 Ответ

0 голосов
/ 23 ноября 2018

Конструктор gzipfile принимает:

class gzip.GzipFile(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)

Однако вы передаете байты вместо строки как filename.

Это объясняетсясообщение об ошибке:

ожидаемый объект str, bytes или os.PathLike, а не _io.BytesIO

Похоже, вы должны загрузить файл, а затем указать имя файла дляскачанный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...