簡體   English   中英

使用 lambda 解壓特定文件

[英]Untar specific files using lambda

我正在使用 lambda 函數解壓文件。 lambda 應該解壓文件,一旦完成,它會將包移動到存檔文件夾。

下面的代碼

def untar_file(zip_key,source_bucket,source_path,file):
 zip_obj = s3_resource.Object(bucket_name=source_bucket,key=zip_key)  
 buffer = BytesIO(zip_obj.get()["Body"].read())
 with tarfile.open(fileobj=buffer, mode=('r:gz')) as z:
     for filename in z.getmembers():
         s3_resource.meta.client.upload_fileobj(
         z.extractfile(filename),
         Bucket=source_bucket,
         Key=source_path+f'/{d1}/{filename}.csv'
         )
 copy_objects (zip_key,source_bucket,source_path,file)

我只想解壓包中的特定文件。 我可以指定不解壓哪個文件嗎? 只是為了避免 lambda 超時

用一個簡單的 if 語句解決了這個問題。

zip_obj = s3_resource.Object(bucket_name=source_bucket, key=zip_key)  
buffer = BytesIO(zip_obj.get()["Body"].read())
with tarfile.open(fileobj=buffer, mode=('r:gz')) as z:
    for filename in z.getmembers():
        if any(word not in str(filename) for word in ['text']):
            print(filename)
            s3_resource.meta.client.upload_fileobj(
            z.extractfile(filename),
            Bucket=source_bucket,
            Key=source_path+f'/{d1}/{filename}.csv'
            )
            print ('uploaded')

暫無
暫無

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

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