【问题标题】:How to recursively get Excel files stored in a folder in dbfs using pyspark?如何使用pyspark递归获取存储在dbfs文件夹中的Excel文件?
【发布时间】:2019-11-13 04:56:57
【问题描述】:

我在 dbfs 中安装了一个路径,我需要从给定文件夹中提取 Excel 文件路径,并且同一文件夹包含 Excel 文件或包含 Excel 文件的子文件夹。当前代码仅在一个文件夹中提供 Excel 文件,而不在子文件夹中提供。

files = dbutils.fs.ls('/raw/internal/srange/2018_11_30_00_22_11/')
for file in files:
  if file.path.endswith('xlsx'):
    path = '/dbfs' + file.path[5:]
    print(path)

【问题讨论】:

    标签: pyspark apache-commons-dbutils


    【解决方案1】:

    你也应该检查目录

    def walk_dir(dir_path):
        dir_files = dbutils.fs.ls(dir_path)
        excel_files = []
        for file in dir_files:
            if file.isDir():
                excel_files.extend(walk_dir(file.path))
            elif file.path.endswith('.xlsx'):
                excel_files.append(os.path.join('/dbfs', file.path[5:]))
        return excel_files
        
    all_excel = walk_dir('/raw/internal/srange/2018_11_30_00_22_11/')
    

    我还没有尝试过代码,所以它可能是错误的。

    【讨论】:

      【解决方案2】:

      这是我推荐的:

      for file1 in dbutils.fs.ls("dbfs:/raw/internal/srange/2018_11_30_00_22_11/"):
        if '.xlsx' in file1.name:
          print (file1.name)
        for file2 in dbutils.fs.ls("dbfs:/raw/internal/srange/2018_11_30_00_22_11/"+file1.name):
          if '.xlsx' in file2.name:
            print (file2.name)
          for file3 in dbutils.fs.ls("dbfs:/raw/internal/srange/2018_11_30_00_22_11/"+file1.name+file2.name):
            if '.xlsx' in file3.name:
              print (file3.name)
      

      【讨论】:

        猜你喜欢
        • 2017-04-07
        • 2019-08-29
        • 2019-07-15
        • 1970-01-01
        • 2014-01-18
        • 2021-01-12
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        相关资源
        最近更新 更多