
MinIO 是一个高性能的对象存储系统,兼容 Amazon S3 API。通过 MinIOPython SDK,开发者可以轻松地在 Python 应用中集成对象存储功能。本文将介绍 MinIO Python SDK 的使用方法、典型应用场景和代码示例。
往期阅读>>>
Python 自动化管理Jenkins的15个实用脚本,提升效率
App2Docker:如何无需编写Dockerfile也可以创建容器镜像
Python 自动化识别Nginx配置并导出为excel文件,提升Nginx管理效率
首先需要安装 MinIO Python SDK,要求 Python 版本在 3.7 及以上:
pip install minioMinIO 适用于大规模数据备份,支持版本控制和生命周期管理。
网站图片、文档等静态资源可以存储在 MinIO 中,通过 CDN 加速访问。
与 Spark、Hadoop 等大数据工具集成,作为数据湖的存储后端。
在微服务架构中作为共享存储层,实现服务间的数据交换。
from minio import Miniofrom minio.error import S3Error# 初始化 MinIO 客户端minio_client = Minio( "play.min.io:443", # MinIO 服务器地址 access_key="your-access-key", # 访问密钥 secret_key="your-secret-key", # 秘密密钥 secure=True # 使用 HTTPS)
def manage_buckets(): # 创建存储桶 try: minio_client.make_bucket("my-documents") print("存储桶创建成功") except S3Error as err: print(f"创建存储桶失败: {err}") # 列出所有存储桶 buckets = minio_client.list_buckets() for bucket in buckets: print(f"存储桶: {bucket.name}, 创建时间: {bucket.creation_date}")
def upload_files(): # 上传本地文件 minio_client.fput_object( "my-documents", # 存储桶名称 "reports/annual-report.pdf", # 对象名称(包含路径) "/local/path/annual-report.pdf" # 本地文件路径 ) # 上传字节数据 data = b"Hello, MinIO! This is a text file content." minio_client.put_object( "my-documents", "test/hello.txt", data, len(data) )
def download_files(): # 下载文件到本地 minio_client.fget_object( "my-documents", "reports/annual-report.pdf", "/local/download/annual-report.pdf" ) # 获取文件数据流 response = minio_client.get_object("my-documents", "test/hello.txt") content = response.read() print(f"文件内容: {content.decode('utf-8')}")
def list_objects(): # 列出存储桶中的所有对象 objects = minio_client.list_objects("my-documents") print("存储桶中的文件列表:") for obj in objects: print(f"- {obj.object_name} (大小: {obj.size} 字节)") # 带前缀过滤的列表 images = minio_client.list_objects("my-documents", prefix="images/") print("\n图片文件:") for img in images: print(f"- {img.object_name}")
def file_management(): # 检查文件是否存在 if minio_client.stat_object("my-documents", "reports/annual-report.pdf"): print("文件存在") # 复制文件 minio_client.copy_object( "my-documents", "reports/annual-report-copy.pdf", "my-documents/reports/annual-report.pdf" ) # 删除文件 minio_client.remove_object("my-documents", "reports/annual-report-copy.pdf")
class ImageManager: def __init__(self, endpoint, access_key, secret_key): self.client = Minio( endpoint, access_key=access_key, secret_key=secret_key, secure=True ) self.bucket_name = "images-bucket" def setup_bucket(self): if not self.client.bucket_exists(self.bucket_name): self.client.make_bucket(self.bucket_name) def upload_image(self, image_path, image_name): self.client.fput_object( self.bucket_name, f"originals/{image_name}", image_path ) print(f"图片 {image_name} 上传成功") def generate_thumbnail_url(self, image_name, expiry=3600): return self.client.presigned_get_object( self.bucket_name, f"originals/{image_name}", expires=expiry )# 使用示例manager = ImageManager("play.min.io:443", "your-key", "your-secret")manager.setup_bucket()manager.upload_image("/path/to/photo.jpg", "vacation-photo.jpg")thumbnail_url = manager.generate_thumbnail_url("vacation-photo.jpg")
MinIO Python SDK 提供了简单易用的接口来操作对象存储。开发者可以快速在 Python 应用中集成 MinIO 功能,满足各种存储需求。
1、连接管理: 重用客户端实例,避免频繁创建新连接;
2、错误处理: 使用 try-except 块捕获 S3Error 异常;
3、权限控制: 合理设置存储桶和对象的访问权限;
4、性能优化: 对大文件使用分片上传,对小文件进行批量操作;
在实际使用中,可以参考官方文档获取最新的 API 信息和最佳实践。
官方文档: https://min.io/docs/minio/linux/developers/python/minio-py.html
GitHub 仓库: https://github.com/minio/minio-py
API 参考: https://min.io/docs/minio/linux/developers/python/API.html

想高效学习Python?下面三本精选好书满足你的不同需求!
《流畅的Python(第2版)》——Python进阶必读!深入讲解高级特性与最佳实践,适合想精进的开发者。
《Python从新手到高手》:初学者首选,79元系统学习全栈技能。
《Python数据分析:从零基础入门到案例实战》——数据科学利器!手把手教你用Python处理数据,实战案例学完就能用。
三本书均支持先用后付、运费险和7天无理由退货,放心购买!点击“购买”按钮,立即开启你的Python学习之旅吧!
https://ima.qq.com/wiki/?shareId=f2628818f0874da17b71ffa0e5e8408114e7dbad46f1745bbd1cc1365277631c
