У меня есть следующая структура папок в 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. Но я не знаю, как этого добиться. Может кто-нибудь помочь?





Вы можете следовать приведенному ниже подходу.
Сначала получите имена папок на уровне 1 в вашем каталоге 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
Выход:
