Предположим, у нас есть структура виртуальных папок в контейнере хранилища BLOB-объектов Azure (который подключен) следующим образом:
someroot
2019
01
05
somefile0
2020
11
01
somefile1
12
02
somefile2
03
somefile3
Как видите, на финальном уровне больше нет подпапок (т.е. нет комбинации папок и файлов, только файлы).
Как я могу рекурсивно получить все полные пути к каталогам (за исключением путей к файлам) в виде плоского списка?
Вот решение, которое возвращает плоский список полных путей (за исключением путей к файлам):
def get_all_directory_paths(base_path: str) -> list:
"""Get all full directory paths
Parameters
----------
base_path : str
The starting path to search from
Returns
-------
list
Flat list of directory paths
"""
all_paths: list = []
def get_paths(base_path: str):
dir_paths: list = dbutils.fs.ls(base_path)
subdir_paths_test: list = [p.path for p in dir_paths if p.isDir()]
if len(subdir_paths_test) == 0:
all_paths.append(base_path)
else:
for p in dir_paths:
if p.isDir():
get_paths(p.path)
get_paths(base_path)
return all_paths