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

Python下载Firebase Storage文件夹遇AttributeError报错求解

报错根因

AttributeError: 'Storage' object has no attribute 'bucket' 是因为你混用了两套SDK的API:pyrebase封装的Storage类本身没有暴露list_files()方法,你参考的旧教程把pyrebase的接口和Google官方Cloud Storage SDK的接口搞混了,直接在pyrebase的storage实例上调用不存在的方法就会触发这个属性错误。
你原有代码另外两个容易触发失败的问题:

  • 没有提前创建本地存储下载文件的data目录,会触发路径不存在异常
  • 没有过滤文件夹占位对象、硬编码所有文件后缀为png,会导致下载的文件格式损坏、拉取到非目标路径的文件
修复方案
  1. 先替换依赖,原版pyrebase已经停更很久,用维护中的pyrebase4分支,同时安装官方Cloud Storage依赖:
pip uninstall -y pyrebase
pip install pyrebase4 google-cloud-storage
  1. 替换成下面的可运行代码,核心是通过pyrebase的storage实例拿到原生GCS的bucket对象,再用官方SDK的列表方法拉取指定路径的文件:
import os
import pyrebase

# 本地存储目录,提前创建避免路径报错
save_dir = "data"
os.makedirs(save_dir, exist_ok=True)

# 替换为你自己的Firebase项目配置
config = {
    "apiKey": "",
    "authDomain": "",
    "projectId": "",
    "databaseURL": "",
    "storageBucket": "", # 注意不要带gs://前缀,填 项目ID.appspot.com 即可
    "messagingSenderId": "",
    "appId": "",
}

firebase = pyrebase.initialize_app(config)
storage = firebase.storage()
# 获取原生GCS bucket实例,这一步才能调用列表、批量操作接口
bucket = storage.bucket

# 拉取images目录下的所有文件,delimiter='/'表示不遍历嵌套子文件夹
target_path_prefix = "images/"
file_blobs = bucket.list_blobs(prefix=target_path_prefix, delimiter='/')

count = 1
for blob in file_blobs:
    # 跳过文件夹本身的占位对象
    if blob.name.endswith("/"):
        continue
    try:
        print(f"下载文件: {blob.name}")
        # 自动识别文件后缀,避免硬编码png导致格式错误
        file_ext = os.path.splitext(blob.name)[1]
        save_path = os.path.join(save_dir, f"{count}{file_ext}")
        blob.download_to_filename(save_path)
        count += 1
    except Exception as e:
        print(f"文件 {blob.name} 下载失败,错误信息: {str(e)}")
注意事项
  • 如果需要下载images目录下所有嵌套子文件夹里的图片,删掉list_blobs里的delimiter='/'参数即可
  • 运行前确认Firebase Storage的安全规则开放了对应路径的读取权限,本地测试可以临时设置为公开读取,正式环境记得加回鉴权校验
  • 如果配置里的storageBucket填错,会触发bucket不存在的报错,直接去Firebase控制台Storage页面复制初始存储桶地址即可

内容的提问来源于stack exchange,提问作者Kiên Lư

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:54:33