You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将GCS Bucket中artifacts目录下的文件夹下载到本地?

解决GCS指定文件夹下载问题

问题分析

你的代码存在几个关键问题:

  • 未定义bucket_name变量,需要指定为实际桶名test_bucket
  • prefix参数设置错误,目标artifacts目录完整路径是11100/e324vn241c9e4c4/artifacts/,仅用artifacts会匹配根目录下所有以该词开头的文件
  • 未提前创建本地目录,直接下载带路径的文件会因目录不存在报错
  • 未过滤目标文件夹(confusion_matrix、model、roc_auc_plot),会下载artifacts下所有文件

修改后的代码

from google.cloud import storage
import os

# 初始化客户端
storage_client = storage.Client.from_service_account_json('service_account.json')
bucket = storage_client.get_bucket('test_bucket')

# 目标文件夹列表
target_folders = ['confusion_matrix', 'model', 'roc_auc_plot']
# 完整的前缀路径
base_prefix = '11100/e324vn241c9e4c4/artifacts/'

for folder in target_folders:
    # 拼接每个目标文件夹的前缀
    folder_prefix = f"{base_prefix}{folder}/"
    # 获取该文件夹下所有文件
    blobs = bucket.list_blobs(prefix=folder_prefix)
    
    for blob in blobs:
        # 跳过文件夹本身(GCS中文件夹是后缀为/的blob)
        if blob.name.endswith('/'):
            continue
        
        # 构造本地保存路径
        local_path = f"./{blob.name}"
        # 创建文件所在的本地目录
        os.makedirs(os.path.dirname(local_path), exist_ok=True)
        
        print(f"Downloading file [{blob.name}]")
        blob.download_to_filename(local_path)

关键修改说明

  • 明确指定了桶名test_bucket,修复未定义变量问题
  • 使用完整前缀定位到目标artifacts目录,确保只扫描指定路径下的文件
  • 添加os.makedirs创建本地目录,避免路径不存在报错
  • 只遍历目标文件夹列表中的内容,精准下载所需文件

内容的提问来源于stack exchange,提问作者merkle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:52:17