有人可以让我知道如何使用 databricks dbutils 删除文件夹中的所有文件。 我已尝试以下方法,但不幸的是,Databricks 不支持通配符。
dbutils.fs.rm('adl://azurelake.azuredatalakestore.net/landing/stageone/*')
谢谢
根据文档,rm函数接收2个参数:
rm(dir: String, recurse: boolean = false): boolean -> 删除文件或目录
其中第二个参数是一个布尔标志,用于设置递归性,因此您只需将其设置为 true 即可:
dbutils.fs.rm('adl://azurelake.azuredatalakestore.net/landing/stageone/',True)
这样的东西应该有效:
val PATH = "adl://azurelake.azuredatalakestore.net/landing/stageone/"
dbutils.fs.ls(PATH)
.map(_.name)
.foreach((file: String) => dbutils.fs.rm(PATH + file, true))
总结以上所有答案:
要删除整个文件夹,请使用:
PATH = "adl://azurelake.azuredatalakestore.net/landing/stageone/"
dbutils.fs.rm(PATH,True)
2)要删除除该文件夹本身之外的所有文件和子文件夹,请使用:
PATH = "adl://azurelake.azuredatalakestore.net/landing/stageone/"
for i in dbutils.fs.ls(PATH):
dbutils.fs.rm(i[0],True)
我自己测试过,有效!
如果您有任何疑问,请告诉我。
--时政
增强ezraorich的答案,如果你想删除目录中的文件夹和文件,那么使用
PATH = "dbfs/azure/directory/sub_dirctory"
for i in dbutils.fs.ls(PATH):
dbutils.fs.rm(i[0],True)
对于 python 用户,你可以这样做:
folder_path = 'adl://azurelake.azuredatalakestore.net/landing/stageone/'
path_list = [fileinfo.path for fileinfo in dbutils.fs.ls(folder_path)]
for path in path_list:
dbutils.fs.rm(path)
这对我有用:
PATH = "adl://azurelake.azuredatalakestore.net/landing/stageone/"
for i in dbutils.fs.ls(PATH):
dbutils.fs.rm(i[0])
我对这篇文章很感兴趣,但很好奇如果需要“保留”目录,使用两个 API 调用是否会更快/更好。
(scala 伪代码)
dbutils.fs.rm("adl://azurelake.azuredatalakestore.net/landing/stageone/", true)
dbutils.fs.mkdirs("adl://azurelake.azuredatalakestore.net/landing/stageone/")