猿问

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

我想使用以下方法从 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


动漫人物
浏览 255回答 3
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 osimport ...snippet... # yours to fill in here what else you need to import.files_processed = 0files_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)

吃鸡游戏

我发现命令%fs rm -r /mnt/inbox/test仅适用于文件夹。不是直接放在容器中的文件上,所以在上面的代码中, 收件箱是容器,测试是文件夹。那么它的工作原理。文件需要在一个文件夹中。

忽然笑

我发现的相同问题。 %fs rm -r path 或者 dbutils.fs.rm('path', True)检查path它是否指向“容器”而不是“文件夹”。我们无法从数据块中删除 azure blob 容器。
随时随地看视频慕课网APP

相关分类

Python
我要回答