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)

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
添加回答
舉報