【问题标题】:Can PySpark Handle os.walk to Iterate Through Sub-Folders?PySpark 可以处理 os.walk 以遍历子文件夹吗?
【发布时间】:2019-10-11 15:32:03
【问题描述】:

我测试了几个代码示例,这些示例列出了特定文件夹中的所有文件(如下)。但是,没有人可以使用通配符处理子文件夹的迭代。

第一次尝试:

import sys, os

root = "/dbfs/mnt/rawdata/2019/01/"+"01"+"/corp/"
path = os.path.join(root, "targetdirectory")
for path, subdirs, files in os.walk(root):
    for name in files:
        print(os.path.join(path, name))

第二次尝试:

import os
for root, dirs, files in os.walk("/dbfs/mnt/rawdata/2019/01/01/corp/"):
    print(root)
    print(dirs)
    print(files)

因此,在此示例中,/01/01/ 代表 1 月 1 日(非常明显)。有没有办法一次性列出一月份的所有文件?我正在使用 Databricks 和 PySpark。谢谢!

【问题讨论】:

  • 我看不出 pyspark 是如何影响这一点的,但 os.walk 将遍历根路径的所有子文件夹。您只是将 january 的子文件夹用作 root,它永远不会“突破”根路径...如果您想要所有 1 月文件,请尝试使用“/dbfs/mnt/rawdata/2019/01/”作为 root /跨度>
  • 啊啊啊!!当然!!!
  • 为什么选择 Pyspark?这是一个简单的 Python 任务

标签: pyspark databricks


【解决方案1】:

是的,先生 它确实迭代...

import os
EXT = 'File_Name'
PATH = 'Path_Name'
for subdir, dirs, files in os.walk(PATH):
  for filename in files:
    filepath = subdir + os.sep + filename

    if filepath.endswith(EXT): 
        print (filepath) 

请检查缩进

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多