【问题标题】:How to download all the files from S3 bucket irrespective of file key using python如何使用 python 从 S3 存储桶下载所有文件,而不考虑文件密钥
【发布时间】:2019-04-03 14:39:09
【问题描述】:

我正在开发一个自动化部分,无论文件名如何,我都需要从 S3 存储桶内的文件夹中下载所有文件。我知道在 python 中使用 boto3 我可以下载如下文件:

s3BucketObj = boto3.client('s3', region_name=awsRegion, aws_access_key_id=s3AccessKey, aws_secret_access_key=s3SecretKey)
s3BucketObj.download_file(bucketName, "abc.json", "/tmp/abc.json")

但我随后尝试下载所有文件,而不管以这种方式指定的文件名:

s3BucketObj.download_file(bucketName, "test/*.json", "/test/")

我知道上面的语法可能完全错误,但有没有简单的方法可以做到这一点?

我确实在这里找到了一个有用但似乎有点复杂的线程:Boto3 to download all files from a S3 Bucket

【问题讨论】:

    标签: python-3.x amazon-web-services amazon-s3 boto3


    【解决方案1】:

    没有对可以下载多个文件的 Amazon S3 的 API 调用。

    最简单的方法是使用AWS Command-Line Interface (CLI),它有aws s3 cp --recursiveaws s3 sync 命令。它会为你做一切。

    如果您选择自己编程,那么Boto3 to download all files from a S3 Bucket 是一个很好的方法。这是因为您需要做几件事:

    • 循环遍历每个对象(没有用于复制多个文件的 S3 API)
    • 如果本地目录不存在则创建一个
    • 将对象下载到相应的本地目录

    如果您不希望重现目录结构(例如,如果所有对象都在同一路径中),任务可以变得更简单。在这种情况下,您可以简单地遍历对象并将它们中的每一个下载到同一个目录中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 2015-05-20
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多