この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
長すぎるファイル名(255byteを超えるファイル名)がZipに含まれている場合、このZipを Lambda で展開して処理しようとすると、ファイルシステムの制限に抵触して File name too long
エラーが発生します。
import requests
import zipfile
url = 'url of some zip file'
res = requests.get(url)
with zipfile.ZipFile(io.BytesIO(res.content)) as z:
for info in z.infolist():
filepath = z.extract(info, '/tmp/foo/')
with open(filepath, 'rb') as body_file:
# write anything you want
前述のコードの z.extract
の部分で File name too long
エラーが発生します。
この問題を解決するには次のコードのように extract
せずに、ファイルコンテンツを取り出します。
import requests
import zipfile
url = 'url of some zip file'
res = requests.get(url)
with zipfile.ZipFile(io.BytesIO(res.content)) as z:
for info in z.infolist():
with z.open(info.filename, 'r') as body_file:
# write anything you want