[英]Download a file from a folder inside S3 bucket in python
我有一个存储为字符串的存储桶名称
s3_dest1 = "s3://fbg-hg/AGLUE/MYSQL/QUERY1/"
s3_dest2 = "s3://fbg-hg/AGLUE/MYSQL/QUERY2/"
s3_dest3 = "s3://fbg-hg/AGLUE/MYSQL/QUERY3/"
s3_dest4 = "s3://fbg-hg/AGLUE/MYSQL/QUERY4/"
s3_dest5 = "s3://fbg-hg/AGLUE/MYSQL/QUERY5/"
s3_dest6 = "s3://fbg-hg/AGLUE/MYSQL/QUERY6/"
我想从此 s3 存储桶下载文件,并以附件形式结束 email。 此文件夹中只有一个文件,但要获取此文件,我们需要遍历该文件夹,因为我不知道文件的名称。
这就是我正在做的,但这段代码给了我错误。
AttributeError: 'str' object 没有属性 'objects'
这是我的 python 代码
my_list = [s3_dest1, s3_dest2,s3_dest3,s3_dest4,s3_dest5,s3_dest6]
for s3_dest in my_list:
s3=boto3.client('s3')
for s3_object in s3_dest.objects.all():
filename = os.path.split(s3_object.key)
print(filename)
我是 python 的新手
正如这个答案和那个答案中所描述的,有多种方法可以解决这个问题。 在您的情况下,您将目标保存为字符串,但从未对其进行任何操作。 您从未将其传递给boto3
。 如果我尝试让您的代码正常工作,它会变成类似
# Use the bucket name, not a connection string
my_list = ['fbg-hg/AGLUE/MYSQL/QUERY1', ...]
attachments = []
s3=boto3.client('s3')
for bucket_name in my_list:
bucket = s3.Bucket(bucket_name)
for s3_object in bucket.objects.all():
filename = os.path.split(s3_object.key)
print(filename)
# and then when you want to add it as an attachment
bytes_buffer = io.BytesIO()
client.download_fileobj(Bucket=bucket_name,
Key=object_key,
Fileobj=bytes_buffer)
byte_value = bytes_buffer.getvalue()
attachments.append(byte_value.decode())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.