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()