【问题标题】:Download multiple files from S3 bucket using boto3使用 boto3 从 S3 存储桶下载多个文件
【发布时间】:2022-01-09 00:47:02
【问题描述】:

我有一个包含许多 uuid

的 csv 文件

我想使用boto3 编写一个python 脚本:

  1. 连接到 AWS S3 存储桶
  2. 使用 CSV 中包含的每个 uuid 来复制包含的文件

文件都包含在这样的文件路径中: BUCKET/ORG/FOLDER1/UUID/DATA/FILE.PNG 但是DATA/中包含的文件可以是不同的文件类型。

  1. 将复制的文件放入新的S3 存储桶中

到目前为止,我已经成功连接到 s3 存储桶并使用 boto3 在 python 中检查了它的内容,但需要帮助实现其余部分

import boto3

#Create Session
session = boto3.Session(
    aws_access_key_id='ACCESS_KEY_ID',
    aws_secret_access_key='SECRET_ACCESS_KEY',
)

#Initiate S3 Resource
s3 = session.resource('s3')

                  
your_bucket = s3.Bucket('BUCKET-NAME')


for s3_file in your_bucket.objects.all():
    print(s3_file.key) # prints the contents of bucket

【问题讨论】:

    标签: python amazon-web-services csv amazon-s3 boto3


    【解决方案1】:

    要读取 CSV 文件,您可以使用 csv 库(请参阅:https://docs.python.org/fr/3.6/library/csv.html) 示例:

    import csv
    with open('file.csv', 'r') as file:
        reader = csv.reader(file)
        for row in reader:
            print(row)
    

    要将文件推送到新存储桶,可以使用copy 方法(参见:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.copy)

    示例:

    import boto3
    s3 = boto3.resource('s3')
    source = {
          'Bucket': 'BUCKET-NAME',
          'Key': 'mykey'
    }
    bucket = s3.Bucket('SECOND_BUCKET-NAME')
    bucket.copy(source, 'SECOND_BUCKET-NAME')
    

    【讨论】:

      猜你喜欢
      • 2015-11-02
      • 2019-03-22
      • 2018-01-04
      • 1970-01-01
      • 2018-06-02
      • 2019-05-30
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      相关资源
      最近更新 更多