我可以使用以下命令以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)
在这里,我有一个包含许多对象的路径。 Bucket/path/objects
,在这里我要删除整个路径文件夹。在linux中,我可以发出rm -rf path
来递归地删除其内容。使用Python客户端SDK在Minio中如何做同样的事情?我只看到用于删除对象和从客户端SDK删除对象的api。请建议如何删除它。
答案 0 :(得分:1)
要删除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)
注意:
答案 1 :(得分:1)
使用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)