Как я читаю выбранные файлы из удаленного архива Zip по HTTP с помощью Python?

Простой и читаемый фрагмент, используя lodash.

Вам нужно поместить ключ в кавычки только при вызове sortBy. Это не должно быть в кавычках в самих данных.

_.sortBy(myObj, "key")

Кроме того, ваш второй параметр для карты неверен. Это должна быть функция, но проще использовать pluck.

_.map( _.sortBy(myObj, "key") , "value");
10
задан Marcel Levy 18 September 2008 в 17:03
поделиться

3 ответа

Вот то, как я сделал это (захватывающий все файлы, заканчивающиеся в ".ranks"):

import urllib2, cStringIO, zipfile

try:
    remotezip = urllib2.urlopen(url)
    zipinmemory = cStringIO.StringIO(remotezip.read())
    zip = zipfile.ZipFile(zipinmemory)
    for fn in zip.namelist():
        if fn.endswith(".ranks"):
            ranks_data = zip.read(fn)
            for line in ranks_data.split("\n"):
                # do something with each line
except urllib2.HTTPError:
    # handle exception
8
ответ дан 3 December 2019 в 22:39
поделиться

Примите во внимание, что просто распаковка zip-файла может привести к уязвимости системы обеспечения безопасности.

1
ответ дан 3 December 2019 в 22:39
поделиться

Спасибо, Марсель, за ваш вопрос и ответ (у меня была та же проблема в другом контексте, и я столкнулся с той же проблемой с файловыми объектами, которые на самом деле не похожи на файлы)! Просто в качестве обновления: для Python 3.0 ваш код необходимо немного изменить:

import urllib.request, io, zipfile

try:
    remotezip = urllib.request.urlopen(url)
    zipinmemory = io.BytesIO(remotezip.read())
    zip = zipfile.ZipFile(zipinmemory)
    for fn in zip.namelist():
        if fn.endswith(".ranks"):
            ranks_data = zip.read(fn)
            for line in ranks_data.split("\n"):
                # do something with each line
except urllib.request.HTTPError:
    # handle exception
3
ответ дан 3 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: