亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 python SDK 刪除 Minio 存儲中的路徑?

如何使用 python SDK 刪除 Minio 存儲中的路徑?

慕容708150 2022-05-11 16:27:43
我可以使用以下命令刪除 minio 中的對象。from minio import Miniofrom minio.error import ResponseErrorminioClient = Minio('localhost:9000',                    access_key='your-key',                    secret_key='your-key', secure=False)#Remove an object.try:    minioClient.remove_object('test', 'sampletest')except ResponseError as err:    print(err)在這里,我有一個包含許多對象的路徑。Bucket/path/objects,這里我要刪除整個路徑文件夾。在 linux 中,我可以發出rm -rf path遞歸刪除其內容。如何使用 Python 客戶端 SDK 在 Minio 中做同樣的事情?我只看到 api 來刪除對象并從客戶端 sdk 中刪除對象。請建議如何刪除它。
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

使用pyminio來做到這一點:


from pyminio import Pyminio


pyminio_client = Pyminio.from_credentials(

    endpoint='<your-minio-endpoint>',  # e.g. "localhost:9000/"

    access_key='<your-minio-access-key>',

    secret_key='<your-minio-secret-key>'

)


pyminio_client.rm('/test/sampletest', recursive=True)


查看完整回答
反對 回復 2022-05-11
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

要刪除 minio 中的整個文件夾,您只需刪除要刪除的文件夾的所有內容。


在您的情況下,運行時將刪除“路徑”文件夾


minioClient.remove_object('test','path/p1.jpg')

minioClient.remove_object('test','path/scene1.jpg')


要以更好的方式做到這一點,您可以使用帶有前綴和遞歸參數的 list_objects,如下所示:


from minio import Minio

from minio.error import ResponseError


minioClient = Minio('localhost:9000',

                    access_key='your-key',

                    secret_key='your-key', secure=False)


def deleteFolder2(bucketname, folderName):

    # Delete using "remove_object"

    objects_to_delete = minioClient.list_objects(bucketname, prefix=folderName, recursive=True)

    for obj in objects_to_delete:

        minioClient.remove_object(bucketname, obj.object_name)



def deleteFolder1(bucketname, folderName):

    # Delete using "remove_objects"

    objects_to_delete = minioClient.list_objects(bucketname, prefix=folderName, recursive=True)

    objects_to_delete = [x.object_name for x in objects_to_delete]

    for del_err in minioClient.remove_objects(bucketname, objects_to_delete):

        print("Deletion Error: {}".format(del_err))



try:

    # Use either deleteFolder1 or deleteFolder2

    deleteFolder1('test', 'path')

    deleteFolder2('test', 'path')

except ResponseError as err:

    print(err)

筆記:

  • deleteFolder1 中 remove_objects 的返回值是一個迭代器。由于該函數是惰性的,默認情況下不會評估。必須評估上面返回的迭代器(例如使用循環),因為它在 deleteFolder1 中完成。

  • 僅當服務對其執行刪除操作時出現錯誤時,迭代器才會包含項目。每個項目都包含有刪除錯誤的對象的錯誤信息。

  • 您傳遞給 deleteFunction 的文件夾名稱應該是絕對路徑,即如果存儲桶結構如下test/path/path2并且如果要刪除path2文件夾,則需要將path/path2作為文件夾名稱傳遞給 deleteFunction


查看完整回答
反對 回復 2022-05-11
  • 2 回答
  • 0 關注
  • 793 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號