Python读取Google Cloud Storage存储桶文件遇IOError报错求助
解决Python读取Google Cloud Storage文件时的IOError问题
问题根源
Python内置的open()函数只能访问本地文件系统的文件,它无法识别GCS特有的gs://协议路径——哪怕你确认文件确实存在于GCS存储桶中,直接用open()读取也会抛出"找不到文件或目录"的错误。
解决方案:使用GCS官方Python客户端库
要直接读取GCS中的文件,你需要借助Google官方提供的google-cloud-storage客户端库,以下是具体步骤:
1. 安装依赖包
先通过pip安装客户端库:
pip install google-cloud-storage
2. 修改代码实现GCS文件读取
替换你原来的代码为以下版本,它能正确访问GCS存储桶中的文件:
from google.cloud import storage import os # 初始化存储客户端 # 注意:如果在GCP托管环境(如Cloud Function、GCE)运行,会自动获取凭据;本地运行需设置环境变量指定服务账号密钥 client = storage.Client() # 定义存储桶名称和文件在桶内的路径 bucket_name = "tp-bi-datalake-mft-landing-dev" file_path_in_bucket = "mdm/OFF-B/test.txt" # 获取存储桶和文件对象 bucket = client.get_bucket(bucket_name) blob = bucket.blob(file_path_in_bucket) # 读取文件内容并按行分割 times = blob.download_as_text().splitlines() # 打印信息 print(os.getcwd()) print(times)
补充说明
- 本地运行时的凭据设置:你需要先下载GCS服务账号的密钥文件,然后通过环境变量指定路径:
export GOOGLE_APPLICATION_CREDENTIALS="/your/path/to/service-account-key.json" - 若只是临时需求,也可以先用
gsutil cp命令把GCS文件下载到本地,再用open()读取,但这种方法不适合处理大文件或需要直接操作云端文件的场景。
内容的提问来源于stack exchange,提问作者Ria Chaudhuri
相关产品推荐
相关产品推荐

