如何使用pyspark/dbutils/databricks根据子目录的名称提取父目录的名称?

问题描述 投票:0回答:1

我在 ADLS gen2 上有以下文件夹结构:

abfss://[email protected]/original_data/

里面有以下文件夹。

abc1/<child_folder_main>
abc2/<child_folder_main>
abc_34/<child_folder_main>
xyf_11/<child_folder_main>
sjw93/<child_folder_main>

但这里的问题是,

original_data
目录中的第一个文件夹的名称无法正确识别,需要在运行时根据其对应的
<child_folder_main>
的名称来提取。

简而言之,我需要输入

child_folder_main
的真实名称,并且我想输出
abc1
abc_34
xyf_11
或基于给定输入的任何其父文件夹名称。

我正在使用

dbutils.fs
操作。但我不知道如何实现这一目标。有人可以帮忙吗?

pyspark databricks azure-databricks dbutils
1个回答
0
投票

您可以按照以下方法进行操作。

首先获取你的

original_data
目录下的一级文件夹名称, 然后检查文件夹是否存在
child_folder_main
以及您获得的 1 级文件夹。

使用下面的代码。


def find_parent_folder(child_folder_main):

    directories = dbutils.fs.ls(original_data_path)
    for directory in directories:
        parent_folder = directory.path.split("/")[-2]
        try:
            if dbutils.fs.ls(directory.path + "/" + child_folder_main):
                return parent_folder
        except:
            res= None
    return res


child_folder_main = "sample.csv"
parent_folder = find_parent_folder(child_folder_main)
print("Parent folder:", parent_folder)

在这里,我完成了路径的拆分,并通过索引提取了父文件夹,并检查子文件夹是否存在,如果存在则返回它或将结果保留为

None

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.