【问题标题】:Boto3 - Recursively copy files from one folder to another folder in S3Boto3 - 递归地将文件从一个文件夹复制到 S3 中的另一个文件夹
【发布时间】:2018-05-20 08:09:31
【问题描述】:

我是我的 S3 存储桶,有很多文件采用不同的文件格式。所以我想从所有具有 .JSON 扩展名的子文件夹复制到另一个文件夹。

当前结构:

S3://mybucket/f1/file.JPG

S3://mybucket/f1/newfile.JSON

S3://mybucket/f2/Oldfile.JSON

应该将它(JSON FILES)复制到文件夹排列:

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

我试过这个(但没有 JSON 过滤器)From 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)

【问题讨论】:

    标签: python amazon-web-services boto3


    【解决方案1】:

    您可以为 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-14
      • 2011-08-22
      • 1970-01-01
      • 2023-01-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2019-10-09
      相关资源
      最近更新 更多