首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用pyspark仅检索s3文件夹路径中的文件名

如何使用pyspark仅检索s3文件夹路径中的文件名
EN

Stack Overflow用户
提问于 2020-08-28 20:08:32
回答 3查看 5.2K关注 0票数 0

嗨,我有aws s3桶,其中定义了几个文件夹和子文件夹

我只需要在任何文件夹中检索文件名。如何去做

s3桶名- abc路径-S3://abc/ann/folder1 1/folder1 2/folder1 3/file1path-S3:/abc/ann/folder1 1/folder1 2/file2 2

到目前为止尝试过的代码

代码语言:javascript
运行
复制
   s3 = boto3.client(s3)
   lst_obj = s3.list_objects(bucket='abc',prefix='ann/')
   lst_obj["contents"]

我正在进一步循环以获取所有的内容

代码语言:javascript
运行
复制
   for file in lst_obj["contents"]:
         do somtheing...

这里的文件“Key”给了我整个路径,但是我只需要文件名。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-28 20:16:12

您可以通过将文件Key拆分到/符号上并提取最后一个元素来提取名称。

代码语言:javascript
运行
复制
for file in lst_obj["contents"]:
       name = file["Key"].split("/")[-1]
票数 5
EN

Stack Overflow用户

发布于 2020-08-28 22:58:39

下面是如何获取文件名的示例。

代码语言:javascript
运行
复制
import boto3

s3 = boto3.resource('s3')

for obj in s3.Bucket(name='<your bucket>').objects.filter(Prefix='<prefix>'):
    filename = obj.key.split('/')[-1]
    print(filename)
票数 6
EN

Stack Overflow用户

发布于 2020-08-28 20:16:23

即使使用前缀,使用列表对象也只是对以特定前缀开头的对象进行筛选。

在S3中,您看到的路径实际上是objects键的一部分,实际上,键(它充当识别对象的元数据)实际上有一个值,包括它们看起来像是子文件夹的值。

如果您想要对象键的最后一部分,则需要用分隔符('/')来拆分键。

您可以使用file['Key'].rsplit(',')[1]完成此操作,这将为您提供文件名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63640278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档