我在 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
操作。但我不知道如何实现这一目标。有人可以帮忙吗?
您可以按照以下方法进行操作。
首先获取你的
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
输出: