Databricks / pyspark:如何从 Azure Blob 存储中递归获取所有完整目录路径(至少有一个文件作为内容)

交联

假设我们在 Azure Blob 存储容器(已挂载)中有一个虚拟文件夹结构,如下所示:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章