minio桶中有多级目录,需要用python下载目录下的csv文件,请生成代码
时间: 2024-03-16 16:41:50 浏览: 244
Python与MinIO结合使用Flask上传与下载文件的完整指南
好的,以下是使用 MinIO Python 客户端下载 MinIO 桶中指定目录下的 CSV 文件的示例代码:
```python
from minio import Minio
from minio.error import ResponseError
# 初始化 MinIO 客户端
client = Minio(
"minio.example.com",
access_key="access_key",
secret_key="secret_key",
secure=False
)
# 指定要下载的 MinIO 桶、目录和本地保存路径
bucket_name = "my-bucket"
prefix = "path/to/csv/files"
local_path = "/path/to/local/directory"
# 获取指定前缀的对象列表
try:
objects = client.list_objects_v2(bucket_name, prefix=prefix, recursive=True)
for obj in objects:
# 判断对象是否是文件,并且是否是 CSV 格式
if obj.object_name.endswith(".csv") and not obj.is_dir:
# 生成本地保存路径
object_path = obj.object_name[len(prefix):]
local_file_path = local_path + object_path
# 下载文件到本地
client.fget_object(bucket_name, obj.object_name, local_file_path)
print(f"Downloaded object '{obj.object_name}' to '{local_file_path}'")
except ResponseError as err:
print(err)
```
在上面的示例代码中,我们首先初始化了一个 MinIO 客户端,然后指定要下载的 MinIO 桶、目录和本地保存路径。然后通过 `list_objects_v2` 方法获取指定前缀的对象列表,遍历对象列表,判断对象是否是文件,并且是否是 CSV 格式,然后生成本地保存路径并调用 `fget_object` 方法下载文件到本地。
需要注意的是,以上代码只会下载指定目录下的 CSV 文件,不会下载目录本身。如果您需要下载整个目录(包括目录本身),可以将 `recursive` 参数设置为 `True`。
阅读全文