问题描述
我已经使用挂载命令挂载了“mybucket”,我可以使用以下命令列出所有对象-
%fs
ls /mnt/mybucket/
但是,我在“mybucket”中的文件夹中有文件夹,我想运行以下命令但它不起作用。
%fs
ls /mnt/mybucket/*/*/
非常感谢任何帮助。谢谢
解决方法
dbutils.fs.ls
及其魔法变体 %fs ls
不支持通配符,因此您需要自己遍历文件,如下所示:
def list_files(path,max_level = 1,cur_level=0):
d = dbutils.fs.ls(path)
for i in d:
if i.name.endswith("/") and i.size == 0 and cur_level < (max_level - 1):
yield from list_files(i.path,max_level,cur_level+1)
else:
yield i.path
files = list_files("/mnt/mybucket",1)