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

如何仅通过bucket url使用Python下载gcloud bucket blob对象

关于仅通过URL下载Google Cloud Storage对象的Python实现方案

首先明确:官方google-cloud-storage客户端没有提供完全跳过URL解析、直接传入URL调用下载的原生接口。但你可以用内置的封装方法避免手动写URL解析逻辑,完全满足你的使用需求,具体实现如下:

方案1:使用内置Blob.from_url()方法(推荐,支持身份鉴权)

该方法会自动兼容解析所有合法的GCS对象URL,无需你手动拆分提取bucket名和blob名,解析逻辑由官方库内部实现,出错概率远低于自定义解析代码。

依赖安装

pip install google-cloud-storage

代码示例

from google.cloud import storage

# 初始化GCS客户端,会自动读取本地环境的鉴权信息
gcs_client = storage.Client()

# 支持传入的URL格式包括:
# 1. gs://<bucket_name>/<blob_path> 格式
# 2. https://storage.googleapis.com/<bucket_name>/<blob_path> 格式
# 3. https://<bucket_name>.storage.googleapis.com/<blob_path> 格式
blob = storage.Blob.from_url("gs://example-bucket/documents/report.pdf", client=gcs_client)

# 下载到本地文件
blob.download_to_filename("./local_report.pdf")

# 也可以直接下载内容到内存使用
file_content = blob.download_as_bytes()

方案2:直接发起HTTP请求(仅适用于公开对象或带签名的URL)

如果你的对象是公开可读的,或者你持有的是已经生成好的带签名访问URL,不需要走GCP身份鉴权流程,可以直接用普通HTTP请求库下载,完全不需要引入GCS客户端:

import requests

gcs_object_url = "https://storage.googleapis.com/example-bucket/public_assets/image.png"
response = requests.get(gcs_object_url)
response.raise_for_status()

# 写入本地文件
with open("./local_image.png", "wb") as f:
    f.write(response.content)

补充说明:所有GCS的接口调用本质都需要bucket和blob两个定位参数,哪怕用from_url方法,底层依然会做URL拆分提取,只是不需要你手动实现解析逻辑而已,目前没有完全跳过解析的原生方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:15:01