簡體   English   中英

Boto3-在S3中將文件從一個文件夾遞歸復制到另一個文件夾

[英]Boto3 - Recursively copy files from one folder to another folder in S3

我是我的S3存儲桶,有很多文件采用不同的文件格式。 因此,我想將所有擴展名為.JSON的子文件夾復制到另一個文件夾。

當前結構:

S3://mybucket/f1/file.JPG

S3://mybucket/f1/newfile.JSON

S3://mybucket/f2/Oldfile.JSON

它(JSON文件)應復制到以下文件夾中:

S3://mybucket/arrange/newfile.JSON
S3://mybucket/arrange/Oldfile.JSON

我嘗試了這個(但是沒有針對JSON的過濾器) 來自stackoverflow

import os
import boto3
old_bucket_name = 'SRC'
old_prefix = 'A/B/C/'
new_bucket_name = 'TGT'
new_prefix = 'L/M/N/'
s3 = boto3.resource('s3')
old_bucket = s3.Bucket(old_bucket_name )
new_bucket = s3.Bucket(new_bucket_name )

for obj in old_bucket.objects.filter(Prefix=old_prefix):
    old_source = { 'Bucket': old_bucket_name,
                   'Key': obj.key}
    # replace the prefix
    new_key = obj.key.replace(old_prefix, new_prefix)
    new_obj = new_bucket.Object(new_key)
    new_obj.copy(old_source)

您可以為JSON文件保留一個過濾器,如下所示:

for obj in old_bucket.objects.filter(Prefix=old_prefix):
    if obj.key.endswith('.JSON'):
        old_source = { 'Bucket': old_bucket_name,
                   'Key': obj.key}
        # replace the prefix
        new_key = obj.key.replace(old_prefix, new_prefix)
        new_obj = new_bucket.Object(new_key)
        new_obj.copy(old_source)

暫無
暫無

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

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