Чтобы получить только список имен вложенных папок в каталоге в Azure Data Lake с помощью Python

#python #azure #azure-data-lake-gen2

Вопрос:

У меня есть данные в контейнере Azure data lake с именем infaqa и каталоги в infaqa по следующему пути: `infqa/EIM//Продажи/Сырье/APXTConga4__Композитор_Настройка__mdt, infqa/EIM//Продажи/Сырье/Учетная запись и т. Д.

Я использую записные книжки Azure и подобные библиотеки blobserviceclient to list blobs , но я вижу весь список вложенных папок, а вложенные папки продолжают перечисляться. Где, как я ищу только имена вложенных папок в списке, например ['APXTConga4__Composer_Setting__mdt','Account'...] , из выходных данных, которые показаны ниже

 Input:  blobPrefix = "/EIM/Sales/Raw/"   mylist=[]  objects=[]  blob_list = container_client.list_blobs(blobPrefix)  for blob in blob_list:  mylist.append(blob.name)  print(blob.name)    Ouptut:  EIM/Sales/Raw/APXTConga4__Composer_Setting__mdt  EIM/Sales/Raw/APXTConga4__Composer_Setting__mdt/2020  EIM/Sales/Raw/APXTConga4__Composer_Setting__mdt/2020/12  EIM/Sales/Raw/APXTConga4__Composer_Setting__mdt/2020/12/02  EIM/Sales/Raw/Account  EIM/Sales/Raw/Account/2020  EIM/Sales/Raw/Account/2020/12  EIM/Sales/Raw/Account/2020/12/02  

Комментарии:

1. Привет @yogesh sasanapuri ,Какую ошибку вы получаете, используя blobserviceclient , пожалуйста, отредактируйте вопрос и добавьте то, что вы пробовали

2. Привет @ShrutiJoshi-MT, пожалуйста, проверьте сейчас и помогите мне с решением…

Ответ №1:

Попробуйте это решение ,я попробовал в своей системе

У меня есть структура папок, например, где test контейнер и account является папкой

 1)test/account/main/sub1/ 2)test/account/test1/sub2 3)test/account/test2/sub3   from azure.storage.blob import BlobServiceClient import os  source_key = 'Key' source_account_name = 'Account Name' block_blob_service = BlobServiceClient(  account_url=f'https://{source_account_name}.blob.core.windows.net/', credential=source_key) source_container_client = block_blob_service.get_container_client(  'Container name') result=[] allfolders=[] generator =source_container_client.list_blobs("account")  for file in source_container_client.walk_blobs('account/', delimiter='/'):  print(file.name)  text=file.name  result.append(text) for data in result:    allfolders.append(data.replace("account/","")) print(allfolders) for res in allfolders:  print(res)  

выход

Структура папок в учетной записи хранения

введите описание изображения здесь

введите описание изображения здесь

Возможность получить имена всех вложенных папок

введите описание изображения здесь