当前位置: 首页 > 知识库问答 >
问题:

从python中S3 bucket内的文件夹下载文件

伯丁雷
2023-03-14

我将一个bucket名称存储为string

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桶下载文件,并作为附件结束一封电子邮件。这个文件夹中只有一个文件,但要得到这个文件,我们需要在文件夹上迭代,因为我不知道文件的名称。

这是我正在做的,但这个代码给我错误。

str对象没有属性

这是我的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新手

共有1个答案

张心水
2023-03-14

正如这个答案和那个答案所描述的,有多种方法可以解决这个问题。在您的例子中,您将目标保存为字符串,但从未对其进行任何操作。您从未将其传递给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())
 类似资料:
  • 我只想从s3 bucket inside文件夹下载最新文件。实际上,文件夹中有多个文件夹和文件。但我只需要下载最新日期的文件,并通过从多个文件夹中选择将其上载到一个文件夹中。我指的是stackoverflow源代码中的代码。 下面是s3桶的结构: 所以基本上,我想从文件夹(文件夹_1)内的s3 bucket下载最新文件,而不是从文件夹(文件夹_12、文件夹_13、文件夹_14)内下载最新文件。 我

  • 我需要选择和下载存储在计算机上的许多文件夹,我只能通过远程ssh连接访问这些文件夹。我创建了一个列表(“list.txt”)来只下载我感兴趣的文件夹,我尝试使用一个“for”循环 但是不要阅读我的列表并卸载所有文件夹,我也尝试过 我能做什么?谢了!

  • 我如何下载到我的笔记本电脑通过终端使用“wget”或python或任何相关的东西。

  • 我有一个python脚本,它获取已上传到google云存储桶的文件列表,并尝试以字符串形式检索数据。 代码很简单: 我的问题是,我上传的数据存储在bucket中的文件夹中,因此路径类似于: 当google library试图下载文件时,它会以GET请求的形式获取该文件,该请求将上述路径转换为: 有没有办法阻止这种情况发生/通过这种方式下载文件?干杯

  • 我从我的IntelliJ Java 15 Gradle项目的resources文件夹中的子文件夹加载文件时遇到问题...

  • 问题内容: 我已经发现了[这个问题](http://codingdict.com/questions/161576,建议用来获取用户的主目录。 我想通过“下载”文件夹实现相同的目的。我知道[这在C#中是可能的]http://codingdict.com/questions/168125),但是我是Python的新手,也不知道在这里是否也可以做到这一点,最好与平台无关(Windows,Ubuntu)