簡體   English   中英

Python:檢索 zip 文件和進程的塊

[英]Python:Retrieve chunk of a zip file and process

我需要解壓縮大型 zip 文件(大約大小 ~10 GB)並將其放回 S3。 我的 memory 限制為 512 MB。

我嘗試了這段代碼並在line: 9得到了一個MemoryError ,它將整個文件內容加載到 memory 中,因此出現了這個 memory 錯誤。 如何檢索 zip 文件的一塊,解壓縮並將其上傳回 S3?

import json
import boto3
import io
import zipfile

def lambda_handler(event, context):
    s3_resource = boto3.resource('s3')
    zip_obj = s3_resource.Object(bucket_name="bucket.name", key="test/big.zip")
    buffer = io.BytesIO(zip_obj.get()["Body"].read())
    z = zipfile.ZipFile(buffer)

    for filename in z.namelist():
        s3_resource.meta.client.upload_fileobj(
            z.open(filename),
            Bucket="bucket.name",
            Key=f'{"test/" + filename}'
        )

請告訴我

我建議使用 Lambda function 在運行實例api 的 UserData 中使用預定義腳本啟動 EC2 實例,以便您可以在腳本中指定位置文件名等。 在腳本中,您可以從 S3 下載 zip 並使用 linux 命令解壓縮,然后遞歸地將整個文件夾上傳到 S3。

您可以根據 zip 文件大小選擇 RAM/ROM,發布后您可以通過相同的腳本停止實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM