1、创建桶

创建客户端

from minio import Minio

# 创建具有匿名访问权限的客户端。
client = Minio("play.min.io")

# 创建具有访问权限和密钥的客户端。
client = Minio("s3.amazonaws.com", "ACCESS-KEY", "SECRET-KEY")

# 创建具有特定区域的访问密钥和密钥的客户端。
client = Minio(
    "play.minio.io:9000",
    access_key="Q3AM3UQ867SPQQA43P2F",
    secret_key="zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG",
    region="my-region",
)

# 使用代理服务器创建带有自定义HTTP客户端的客户端。
import urllib3
client = Minio(
    "SERVER:PORT",
    access_key="ACCESS_KEY",
    secret_key="SECRET_KEY",
    secure=True,
    http_client=urllib3.ProxyManager(
        "https://PROXYSERVER:PROXYPORT/",
        timeout=urllib3.Timeout.DEFAULT_TIMEOUT,
        cert_reqs="CERT_REQUIRED",
        retries=urllib3.Retry(
            total=5,
            backoff_factor=0.2,
            status_forcelist=[500, 502, 503, 504],
        ),
    ),
)

不存在桶创建桶

found = client.bucket_exists(bucket_name)
if not found:
    client.make_bucket(bucket_name)
    print('新建桶 {} 成功!'.format(bucket_name))
else:
    print("桶 '{}' 存在".format(bucket_name))

2、上传文件到minio桶

client.fput_object()
不能上传文件夹,上传压缩文件和单独的文件,要上传多个,for 循环

 for dir in os.listdir(root): #dir 
     path = root + dir
     for img_absolute_path in glob.glob(path+"/*.png"):  #
         file_path = img_absolute_path  # 本地文件图片绝对路径
         object_name = img_absolute_path.split("/")[-1] # 图片的名字
         # minio 上传的捅地址,多级目录不会自己创建会自己建立
         object_name =  "date/img/1.png" 
         #######################################
         # 传输文件
         client.fput_object(
             bucket_name=bucket_name, #"tmp",  #桶的名字 桶只有一个没有多级目录的捅,看着的多级目录是object_name 格式
             object_name=object_name,  #这里是多级目录的结构,例如 "date/img/1.png"  ,但是桶不是多级的捅,桶内的多级目录是这里给的
             file_path=file_path)   #图片本地的绝对路径
 
     print("=========================> 上传成功,查看minio buket",bucket_name, object_name)

3、从minio 下载桶里面的文件

lists = client.list_objects(bucket_name=bucket_name)
for dir in lists:
    dir_name = dir.object_name  # 通过  对象.object_name才能获取名字  room1/
    img_lists = client.list_objects(bucket_name=bucket_name, prefix=dir_name)  
    for  img in img_lists:
    	img_name  = img.object_name  #   tmp/room1/1.png
    	client.fput_object(
        bucket_name="tmp",
        object_name=img_name,  #   桶中的路径地址
        file_path="/example-data/")  #保存的本地 路径地址

参考 https://blog.csdn.net/aa2528877987/article/details/122729456

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐