我试图在S3上提取。7z文件,并使用AWS Lambda来做到这一点。我想提取每个文件,然后将它们存储回S3桶。我找到了使用boto3和zipfile python库的解决方案,但它们似乎不适用于。7z。
有没有办法在飞行中做到这一点?
尝试使用py7zr
库。
查看下面的示例代码来获得一个想法:
import boto3
import io
import py7zr
def lambda_handler(event, context):
s3 = boto3.client('s3')
s3_bucket_name = event['Records'][0]['s3']['bucket']['name']
s3_object_key = event['Records'][0]['s3']['object']['key']
response = s3.get_object(Bucket=s3_bucket_name, Key=s3_object_key)
body = response['Body'].read()
with py7zr.SevenZipFile(io.BytesIO(body), mode='r') as z:
for filename in z.getnames():
extracted_file = z.read(filename)
s3.put_object(Bucket=s3_bucket_name, Key=filename, Body=extracted_file)