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

san*_*jha 2 python amazon-s3 amazon-web-services boto3 pyspark

您好,我有 aws s3 存储桶,其中定义了一些文件夹和子文件夹

我只需要检索该文件夹中的文件名。该怎么做

s3 bucket name - abc

path - s3://abc/ann/folder1/folder2/folder3/file1

path - s3://abc/ann/folder1/folder2/file2
Run Code Online (Sandbox Code Playgroud)

到目前为止尝试过的代码

   s3 = boto3.client(s3)
   lst_obj = s3.list_objects(bucket='abc',prefix='ann/')
   lst_obj["contents"]
Run Code Online (Sandbox Code Playgroud)

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

   for file in lst_obj["contents"]:
         do somtheing...
Run Code Online (Sandbox Code Playgroud)

这里 file["Key"] 给了我整个路径,但我只需要文件名

A.B*_*A.B 6

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

for file in lst_obj["contents"]:
       name = file["Key"].split("/")[-1]
Run Code Online (Sandbox Code Playgroud)


Lam*_*nus 6

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

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)
Run Code Online (Sandbox Code Playgroud)