【问题标题】:how to specify destination for s3 bucket download python如何为 s3 存储桶下载 python 指定目的地
【发布时间】:2022-01-19 05:04:15
【问题描述】:

如何指定下载文件的目标路径?

    s3 = boto3.resource(..)
    my_bucket = s3.Bucket(S3_BUCKET)
    # download file into current directory
    for s3_object in my_bucket.objects.all():
        path, filename = os.path.split(s3_object.key)
        my_bucket.download_file(s3_object.key, filename)

【问题讨论】:

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


【解决方案1】:

在这一行:

my_bucket.download_file(s3_object.key, filename)

filename 参数指定在本地磁盘上保存对象的位置。

Amazon S3 中对象的Key 可以包含路径,例如january/invoice.txt。但是,您的代码中的这一行:

path, filename = os.path.split(s3_object.key)

从文件名中分离出路径,留下path = january/filename = invoice.txt

因此,当您的代码保存对象时,会将它们保存在当前目录中

要修改这个,你应该在filename中指定一个完整的路径,比如:

my_bucket.download_file(s3_object.key, '/tmp/' + filename)

当您想要保留目录结构时,事情会变得有点复杂。例如,可能有多个同名文件:

january/invoice.txt
february/invoice.txt

现有代码将覆盖第一个 invoice.txt 与第二个。如果您希望保留目录结构,您的代码不会调用os.path.split,而是需要确保每个目标目录已经存在。

例如,请参阅:Download a folder from S3 using Boto3

【讨论】:

    猜你喜欢
    • 2013-09-16
    • 2018-12-31
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多