zip 形式で送信された MMS メッセージを解凍しようとしています。問題は、機能する場合と機能しない場合があることです。そして、それが機能しない場合、python zipfile モジュールは不平を言い、それが悪い zip ファイルであると言います。ただし、zipfile は unix unzip コマンドを使用して正常に解凍されます。
これは私が得たものです
zippedfile = open('%stemp/tempfile.zip' % settings.MEDIA_ROOT, 'w+')
zippedfile.write(string)
z = zipfile.ZipFile(zippedfile)
「w+」を使用して文字列を書き込んでいます。文字列には、zip ファイルの base64 でデコードされた文字列表現が含まれています。
それから私はこれが好きです:
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 モジュールを使用せずにこれを行う方法はありますか?
どういうわけか、zipfile の代わりに unzip コマンドを使用して、アーカイブからすべての画像を取得するために同じことを行うことはできますか?