如何指定 s3 存储桶下载的目的地 python

how to specify destination for s3 bucket download python

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

    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)

这一行:

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,而是需要确保每个目标目录已经存在。

例如,参见: