#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)
выход
Структура папок в учетной записи хранения
Возможность получить имена всех вложенных папок