Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在Databricks(DBFS)中递归列出目录和子目录的文件_Python 3.x_Azure_Databricks_Azure Databricks - Fatal编程技术网

Python 3.x 在Databricks(DBFS)中递归列出目录和子目录的文件

Python 3.x 在Databricks(DBFS)中递归列出目录和子目录的文件,python-3.x,azure,databricks,azure-databricks,Python 3.x,Azure,Databricks,Azure Databricks,使用python/dbutils,如何在Databricks文件系统(DBFS)中递归显示当前目录和子目录的文件。dbutils.fs.ls(和%fs magic命令)令人惊讶的是,它似乎不支持任何递归切换。但是,由于ls函数返回一个FileInfo对象列表,因此递归地迭代这些对象以获取整个内容非常简单,例如: def get_dir_内容(ls_路径): dir\u path=dbutils.fs.ls(ls\u path) subdir_path=[如果p.isDir()和p.path!=l

使用python/dbutils,如何在Databricks文件系统(DBFS)中递归显示当前目录和子目录的文件。

dbutils.fs.ls(和%fs magic命令)令人惊讶的是,它似乎不支持任何递归切换。但是,由于ls函数返回一个FileInfo对象列表,因此递归地迭代这些对象以获取整个内容非常简单,例如:

def get_dir_内容(ls_路径):
dir\u path=dbutils.fs.ls(ls\u path)
subdir_path=[如果p.isDir()和p.path!=ls_path,则获取dir_路径中p的内容(p.path)]
平面细分路径=[p表示细分中的细分路径,p表示细分中的细分路径]
返回列表(映射(lambda p:p.path,dir_路径))+flat_subdir_路径
路径=获取目录内容('/databricks数据集/COVID/CORD-19/2020-03-13')
[路径中p的打印(p)]

可以使用生成器和
生成
操作符执行替代实现。对于
yield from
操作符,您必须至少使用
Python 3.3+
,并查看以下内容以更好地理解
yield
操作符:

def get_dir_内容(ls_路径):
对于dbutils.fs.ls(ls\u路径)中的dir\u路径:
if dir_path.isFile():
屈服方向路径
elif dir_path.isDir()和ls_path!=dir_path.path:
从get\u dir\u内容(dir\u path.path)获得的收益
列表(获取目录内容('/databricks-datasets/COVID/CORD-19/2020-03-13'))

使用路径类似于
/dbfs/mnt/my/mount/…
(而不是
dbfs:/mnt/my/mount/…
——注意前缀)