Я пытаюсь распаковать некоторые MMS-сообщения, отправленные мне в архиве. Проблема в том, что иногда это работает, а другие нет. И когда он не работает, модуль python zipfile жалуется и говорит, что это плохой zip-файл. Но zipfile прекрасно распаковывается с помощью команды unix unzip.
Это то, что у меня есть
zippedfile = open('%stemp/tempfile.zip' % settings.MEDIA_ROOT, 'w+')
zippedfile.write(string)
z = zipfile.ZipFile(zippedfile)
Я использую 'w +' и записываю строку, строка содержит расшифрованное представление base64 строкового zip-файла.
Тогда мне так:
filelist = z.infolist()
images = []
for f in filelist:
raw_mimetype = mimetypes.guess_type(f.filename)[0]
if raw_mimetype:
mimetype = raw_mimetype.split('/')[0]
else:
mimetype = 'unknown'
if mimetype == 'image':
images.append(f.filename)
Таким образом, у меня есть список всех изображений в zip-файле. Но это не всегда работает, так как модуль zipfile жалуется на некоторые файлы.
Есть ли способ сделать это, не используя модуль zipfile?
Могу ли я каким-то образом использовать команду unix unzip вместо zipfile, а затем сделать то же самое, чтобы извлечь все изображения из архива?