我可以使用以下命令删除 minio 中的对象。
from minio import Minio
from minio.error import ResponseError
minioClient = 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)
Run Code Online (Sandbox Code Playgroud)
这里我有一条包含许多对象的路径。Bucket/path/objects,这里我想删除整个路径文件夹。在Linux中,我可以发出rm -rf path递归删除其内容的命令。如何使用 Python 客户端 SDK 在 Minio 中执行相同操作?我只看到用于删除对象和从客户端 SDK 中删除对象的 api。请建议如何删除它。
小智 5
要删除minio中的整个文件夹,您只需删除要删除的文件夹的所有内容即可。
在您的情况下,运行时“路径”文件夹将被删除
minioClient.remove_object('test','path/p1.jpg')
minioClient.remove_object('test','path/scene1.jpg')
Run Code Online (Sandbox Code Playgroud)
为了以更好的方式做到这一点,您可以使用带有前缀和递归参数的 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)
Run Code Online (Sandbox Code Playgroud)
笔记: