为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能从数据块中的 azure blobstorage 容器中删除所有文件

为什么我不能从数据块中的 azure blobstorage 容器中删除所有文件

动漫人物 2021-12-09 15:53:36
我想使用以下方法从 blobstorage 容器中删除所有文件:dbutils.fs.rm指向一个这样的特定文件工作正常:dbutils.fs.rm("/mnt/inbox/InvLog.txt", True)但我想删除容器的所有内容。我尝试了以下但没有成功:dbutils.fs.rm("/mnt/inbox/*.txt", True)dbutils.fs.rm("/mnt/inbox/", True)dbutils.fs.rm("/mnt/inbox", True)dbutils.fs.rm("/mnt/inbox/*.*", True)有什么建议?更新:尝试了 ZF007 建议 %fs rm -r mnt/inbox 但它抛出错误:java.lang.NullPointerException
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

正如您在此处给出的示例中所见,您可以dbutils.fs.rm("/mnt/inbox/InvLog.txt", True)在单个文件方法中使用。


网页上的示例为您提供了以下单个文件:


dbutils.fs.rm("/foobar/baz.txt")

删除文件夹 foobar 下的文件是这样完成的:


 %fs rm -r foobar

在你的情况下使用:


%fs rm -r mnt/inbox

请记住 linux、Windows 和 OSX 系统之间的文件夹注释差异。


更新:


您可以尝试以下非优雅的捷径解决方案来规避您声明的 java 异常:


import os

import ...snippet... # yours to fill in here what else you need to import.


files_processed = 0

files_path = [os.path.abspath(x) for x in os.listdir()]


print (files_path) # your filepath might need cleaning for it can be accepted. It prints here all found files.


for item in files_path:

    if os.path.isfile(item) == True:

        dbutils.fs.rm(item, True)

        files_processed +=1

    else:

        print ('skipped folder: %s', item)


print ("job done", ' : ', file_processed)


查看完整回答
反对 回复 2021-12-09
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

我发现命令

%fs rm -r /mnt/inbox/test

仅适用于文件夹。不是直接放在容器中的文件上,所以在上面的代码中, 收件箱是容器,测试是文件夹。那么它的工作原理。文件需要在一个文件夹中


查看完整回答
反对 回复 2021-12-09
?
忽然笑

TA贡献1806条经验 获得超5个赞

我发现的相同问题。

%fs rm -r path 或者 dbutils.fs.rm('path', True)

检查path它是否指向“容器”而不是“文件夹”。我们无法从数据块中删除 azure blob 容器。


查看完整回答
反对 回复 2021-12-09
  • 3 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信