Unzip my_file.zip вытащил из s3 с помощью boto

Я пытаюсь использовать boto для открытия .zip файла, который у меня есть в s3 . Я пытаюсь работать с данными напрямую, я хочу избежать создания временных файлов.

 In [201]: import StringIO In [202]: import boto In [203]: conn = boto.connect_s3() In [204]: my_bucket = conn.get_bucket('my_bucket') In [205]: my_list = [ele for ele in my_bucket.list('my_file.zip')] In [206]: f = StringIO.StringIO() In [207]: my_list[0].get_file(f) In [208]: f.seek(0) 

Если бы файл не был заархивирован, я бы просто использовал:

 my_content = my_list[0].get_contents_as_string() 

но поскольку он застегнут молнией, я получаю мусор.

Ответ на этот вопрос делает то, что я хочу (я одолжил часть своей попытки) с помощью gzip , но я ничего не могу найти для zip . Я пробовал использовать zipfileZipFile , но методы read , extract и extractall , похоже, не делают того, что я хочу.

One Solution collect form web for “Unzip my_file.zip вытащил из s3 с помощью boto”

Вы должны заглянуть в модуль python gzip:

https://docs.python.org/2/library/gzip.html

вы должны иметь возможность stringIO с gzip. ,

 from boto.s3.connection import S3Connection import gzip from StringIO import StringIO S3Conn = S3Connection() # assuming your .boto has been setup Bucket = S3Conn.get_bucket('my_bucket') my_list = [gzip.GzipFile(fileobj=(StringIO(ele.get_contents_as_string()))) for ele in Bucket.list()] #for readability I pulled this out for item in my_list: item.read() 

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

Удачи!

  • Несогласованная SignatureDoesNotMatch Amazon S3 с django-трубопроводом, s3boto и хранилищами
  • Метод Boto connect_xxx и пулы соединений
  • Поиск файлов (ключ) в ведро s3 занимает больше времени
  • Запуск остановленного экземпляра EC2 с Boto
  • Запрос dynamoDB с полем без хэш-ключа (с boto / python)
  • Boto EC2: создать экземпляр с тегами
  • Команда Boto Execute shell для экземпляра ec2
  • Как получить размер файла / ключа в boto S3?
  • Python - лучший язык программирования в мире.