python之minio基础操作(一)

发布时间 2023-06-08 09:44:41作者: **绵绵羊**
from minio import Minio

file_name = '3e09ca66d9444906935b0171e26891f1.mp4'
file_path = r'E:\集成资料\视频素材'
barrel = "testdata"


def upload_file():
    # 创建minio客户端
    client = Minio(endpoint="xxx.xxx.xxx.xxx:xxxxx",
                   access_key='xxxxx',
                   secret_key='xxxxx',
                   secure=False  # 使用http
                   )
    # 创建桶
    client.make_bucket(bucket_name=barrel)

    # 删除桶
    client.remove_bucket(barrel)

    # 获取桶列表
    barrel_list = client.list_buckets()
    print(barrel_list)

    # 获取桶中的数据信息,不查子文件夹中的数据
    bucket_objects = client.list_objects(barrel)
    for bucket_object in bucket_objects:
        print(bucket_object.object_name)

    # 列出名称以1-4开头的数据信息
    bucket_objects = client.list_objects(barrel, prefix="1-4")
    for bucket_object in bucket_objects:
        print(bucket_object)

    # 递归遍历桶中的数据信息,读取子文件夹下的文件
    bucket_objects = client.list_objects(barrel, recursive=True)
    for bucket_object in bucket_objects:
        print(bucket_object.object_name)

    # 递归查找以/data开头的数据信息
    data = list()
    for root in ["/data1"]:
        bucket_objects = client.list_objects(barrel, prefix=root, recursive=True)
        for bucket_object in bucket_objects:
            data.append(bucket_object.object_name)
            # print(bucket_object.object_name)
    print(len(data))

    # 递归查找以data1同一层级的数据信息
    bucket_objects = client.list_objects(barrel, recursive=True, start_after="data1")
    for bucket_object in bucket_objects:
        print(bucket_object.object_name)

    # 上传文件, bucket_name: 桶名称, object_name:上传到桶中完整的文件路径, file_path:文件本地所在完整路径
    result = client.fput_object(bucket_name=barrel, object_name="data1/" + file_name,
    file_path=file_path + "/" + file_name)
    print(result.object_name, result.bucket_name, result.etag)

    # 下载文件,bucket_name: 桶名称, object_name:被下载文件完整路径, file_path:保存到本地的完整路径
    result = client.fget_object(bucket_name=barrel, object_name="data1/60719d5c50e833d4fa8af3b7412d40000a2.jpg",
                                file_path=r"E:\集成资料\测试项目\minio\1.jpg")
    print(result.object_name, result.content_type, result.owner_name)

    # 判断桶是否存在
    check_bucket = client.bucket_exists(barrel)
    if not check_bucket:  # 不存在则创建桶
        client.make_bucket(barrel)


if __name__ == '__main__':
    upload_file()