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

从boto3检索S3 bucket中的子文件夹名称

支铭晨
2023-03-14

使用boto3,我可以访问我的AWS S3桶:

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')
objs = bucket.meta.client.list_objects(Bucket='my-bucket-name')

您可以看到,检索了特定的文件,在本例中是part-00014,而我只想获取目录的名称。原则上,我可以从所有路径中删除目录名,但在第三级检索所有内容以获得第二级是丑陋和昂贵的!

我也尝试了这里报道的一些东西:

for o in bucket.objects.filter(Delimiter='/'):
    print(o.key)

但是我没有得到所需级别的文件夹。

共有1个答案

倪鸿禧
2023-03-14

下面的代码只返回s3 bucket中“文件夹”中的“子文件夹”。

import boto3
bucket = 'my-bucket'
#Make sure you provide / in the end
prefix = 'prefix-name-with-slash/'  

client = boto3.client('s3')
result = client.list_objects(Bucket=bucket, Prefix=prefix, Delimiter='/')
for o in result.get('CommonPrefixes'):
    print 'sub folder : ', o.get('Prefix')

有关详细信息,请参阅https://github.com/boto/boto3/issues/134

 类似资料:
  • 问题内容: 使用boto3,我可以访问我的AWS S3存储桶: 现在,存储桶包含文件夹,例如,文件夹本身包含多个带有时间戳的子文件夹。我需要知道这些子文件夹的名称来完成我正在做的另一项工作,我想知道是否可以让boto3为我检索这些子文件夹。 所以我尝试了: 它提供了一个字典,其键“目录”为我提供了所有第三级文件,而不是第二级时间戳目录,实际上,我得到了一个包含以下内容的列表: {u’ETag’:’

  • 问题内容: 我的工作区中有一个文件夹,但在“ src”之外,其中包含一个文件,使用自定义插件向导时,该文件需要读取才能设置新文件。 除非我确切指定该文件在系统中的位置,否则我无法正确获取此文件的位置并保持获取空指针。我的问题是该文件在插件项目中,但无法获取它的位置。 插件中的文件位置为com.my.plugin / rules / setup.txt 问题答案: 要从已部署的捆绑包中加载资源,您可

  • 问题内容: 我正在学习Java,但我不太确定搜索文件的方式。我想构建一个返回文件名的函数(文件名应以开头和结尾) 例如,在文件夹中,我们包含Java源文件和一些文件。例如,文件: 1.txt 2.txt 4.txt start.txt star.txt onstart.txt starton.txt myjava.java 然后,我想获得,& 我一直在寻找,但是找不到找到文件的好方法。有谁知道查找

  • 这个问题是本文的后续内容:Python-根据子文件夹和文件名重命名子文件夹中的文件。 我正在尝试遍历中子文件夹中的文件,并以指定的方式重命名每个文件。以下是我目前掌握的代码: 当我运行该行时,,它正确地显示保存在中的名为的文件将被重命名为。 但是,os.rename命令返回以下错误: "必须是字符串,而不是列表。" 这似乎是由于我在os.rename命令中使用了“文件名”。据我所知,os.rena

  • 问题内容: 是否可以在C中获取文件描述符(Linux)的文件名? 问题答案: 您可以使用在其中NNN是文件描述符。这将为您提供文件打开时的名称- 但是,如果此后文件被移动或删除,它可能不再准确(尽管Linux在某些情况下可以跟踪重命名)。要进行验证,请提供给定的文件名和fd,并确保和相同。 当然,并非所有文件描述符都引用文件,对于那些文件描述符,您会看到一些奇怪的文本字符串,例如。由于所有真实文件