有没有办法动态扫描文件夹路径并列出所有文件?
Is there a way to scan through folder paths dynamically and list all files?
我正在测试这段代码。
dbutils.fs.ls("/mnt/rawdata/2019/01/01/corp/")
这对一个文件夹来说工作正常,但如果我尝试下面的行,它会失败。
dbutils.fs.ls("/mnt/rawdata/2019/01/*/corp/")
有没有办法递归列出父文件夹和所有子文件夹中的所有文件?我很想获得传递到数据框中的文件列表。
我尝试了下面的代码,它可以很好地将具有相似名称的文件加载到数据框中。
val myDFCsv = spark.read.format("csv")
.option("sep","|")
.option("inferSchema","true")
.option("header","false")
.load("mnt/rawdata/2019/01/*/corp/*.gz")
但是,我不想将相似的文件合并在一起,我想列出这些文件所在的文件名和路径名。谢谢!
您可以使用 java API FileSystem.globStatus(Path pathPattern)
import org.apache.hadoop.fs.{FileSystem, Path}
val fs: FileSystem = FileSystem.get(spark.sparkContext.hadoopConfiguration)
val files = fs.globStatus(new Path("/mnt/rawdata/2019/01/*/corp/"))
files.foreach(println)
我终于让它工作了!!
import sys, os
import pandas as pd
mylist = []
root = "/dbfs/mnt/rawdata/"
path = os.path.join(root, "targetdirectory")
for path, subdirs, files in os.walk(root):
for name in files:
mylist.append(os.path.join(path, name))
len(mylist)
df = pd.DataFrame(mylist)
我正在测试这段代码。
dbutils.fs.ls("/mnt/rawdata/2019/01/01/corp/")
这对一个文件夹来说工作正常,但如果我尝试下面的行,它会失败。
dbutils.fs.ls("/mnt/rawdata/2019/01/*/corp/")
有没有办法递归列出父文件夹和所有子文件夹中的所有文件?我很想获得传递到数据框中的文件列表。
我尝试了下面的代码,它可以很好地将具有相似名称的文件加载到数据框中。
val myDFCsv = spark.read.format("csv")
.option("sep","|")
.option("inferSchema","true")
.option("header","false")
.load("mnt/rawdata/2019/01/*/corp/*.gz")
但是,我不想将相似的文件合并在一起,我想列出这些文件所在的文件名和路径名。谢谢!
您可以使用 java API FileSystem.globStatus(Path pathPattern)
import org.apache.hadoop.fs.{FileSystem, Path}
val fs: FileSystem = FileSystem.get(spark.sparkContext.hadoopConfiguration)
val files = fs.globStatus(new Path("/mnt/rawdata/2019/01/*/corp/"))
files.foreach(println)
我终于让它工作了!!
import sys, os
import pandas as pd
mylist = []
root = "/dbfs/mnt/rawdata/"
path = os.path.join(root, "targetdirectory")
for path, subdirs, files in os.walk(root):
for name in files:
mylist.append(os.path.join(path, name))
len(mylist)
df = pd.DataFrame(mylist)