[英]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.