S3文件下载返回错误

时间:2018-07-26 17:49:35

标签: python amazon-s3 boto3

我编写了以下Python脚本,将S3存储桶中的 ALL 文件下载到我的当前目录中:

import boto3
import botocore
import os

from boto3.session import Session

ACCESS_KEY='AWS_IAM_AccessKey'
SECRET_KEY='AWS_IAM_SecretKey'

session = Session(aws_access_key_id=ACCESS_KEY, 
aws_secret_access_key=SECRET_KEY)

s3 = session.resource('s3')
myBucket = s3.Bucket('S3_bucketName')

for object in myBucket.objects.all():
    myBucket.download_file(object.key, os.path.join(os.curdir, object.key))

我收到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: './raw_cdr/s3_fileName'

我该如何解决?尽管s3_fileName实际上是raw_cdr目录中的实际文件,但其说法是不存在这样的文件/目录(并且只能在多个文件中找到一个)。

此外,随着S3存储桶大小的增加,我希望进一步增强此脚本,以仅拉取最近24小时内生成的S3文件(使用Last Modified列值),而不是全部拉下来。任何和所有建议都非常感谢。

1 个答案:

答案 0 :(得分:1)

您收到此错误,因为object.key包含/raw_cdr/s3_fileName。由于/raw_cdr/不存在,因此无法创建文件。尝试这样做:

for object in myBucket.objects.all():
    myBucket.download_file(object.key, os.path.join(os.curdir, os.path.basename(object.key)))