如何使用Python 3.5从Google Cloud Platform下载数据至本地?
Hey there! 我来帮你一步步搞定从GCP Cloud Storage下载数据到本地的操作,毕竟第一次弄肯定会有点懵~
从GCP Cloud Storage下载数据到本地(Python 3.5适配版)
第一步:安装适配Python3.5的GCS库
因为Python3.5已经不再被官方支持,所以得指定兼容的稳定版本:
pip install google-cloud-storage==1.44.0
这个版本是最后适配Python3.5的GCS库版本,亲测能用。
第二步:配置凭证文件
把你拿到的JSON凭证文件放在容易找到的路径,比如本地项目根目录,命名为gcp-credentials.json(名字随便,自己记清楚就行)。
配置凭证有两种方式,推荐第一种:
- 方式一:设置环境变量(不用改代码)
根据你的系统在命令行运行对应命令:# Mac/Linux终端 export GOOGLE_APPLICATION_CREDENTIALS="/你的凭证文件绝对路径/gcp-credentials.json" # Windows CMD set GOOGLE_APPLICATION_CREDENTIALS=C:\你的凭证文件绝对路径\gcp-credentials.json # Windows PowerShell $env:GOOGLE_APPLICATION_CREDENTIALS="C:\你的凭证文件绝对路径\gcp-credentials.json" - 方式二:代码里直接指定凭证路径
要是不想设置环境变量,就在代码里手动加载:from google.cloud import storage from google.oauth2 import service_account credentials = service_account.Credentials.from_service_account_file( '/你的凭证文件绝对路径/gcp-credentials.json' ) client = storage.Client(credentials=credentials)
第三步:编写下载代码
下面是两种常见场景的完整代码,替换成你的实际信息就能用:
下载单个文件
from google.cloud import storage # 用环境变量配置凭证的话,直接初始化client就行 client = storage.Client() # 替换成你的桶名、GCS里的文件路径、本地保存路径 bucket_name = "你的GCS桶名称" source_blob_name = "GCS里的文件路径/比如data.csv" destination_file_name = "本地要保存的路径/比如local_data.csv" # 获取桶和文件对象 bucket = client.bucket(bucket_name) blob = bucket.blob(source_blob_name) # 开始下载 blob.download_to_filename(destination_file_name) print(f"文件 {source_blob_name} 已成功下载到 {destination_file_name}")
下载整个桶的所有文件
如果想把桶里的内容完整下载到本地(保持目录结构),用这段代码:
from google.cloud import storage import os client = storage.Client() bucket_name = "你的GCS桶名称" local_download_folder = "./gcp-downloads" # 本地保存的文件夹,不存在会自动创建 # 创建本地文件夹 os.makedirs(local_download_folder, exist_ok=True) bucket = client.bucket(bucket_name) # 遍历桶里的所有文件 for blob in bucket.list_blobs(): # 构造本地保存路径,和GCS里的目录结构一致 local_file_path = os.path.join(local_download_folder, blob.name) # 自动创建文件所在的父目录 os.makedirs(os.path.dirname(local_file_path), exist_ok=True) # 下载文件 blob.download_to_filename(local_file_path) print(f"已下载: {blob.name} -> {local_file_path}") print("所有文件下载完成!")
几个重要提醒
- 确保你的JSON凭证对应的服务账号有Storage Object Viewer权限(可以在GCP控制台的IAM页面给账号添加这个权限),不然会提示权限不足。
- 如果遇到网络中断导致下载失败,可以考虑加重试逻辑,比如安装适配Python3.5的
tenacity库:pip install tenacity==6.3.1,然后给下载函数加重试装饰器。 - 代码里的桶名、文件路径一定要换成你自己的实际信息哦~
内容的提问来源于stack exchange,提问作者Allen
相关产品推荐
相关产品推荐

