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

Google Cloud Function无法读取指定路径下的Pandas DataFrame问题

问题分析与解决方案

问题根源

Cloud Shell的/tmp是当前会话的专属临时目录,里面的文件是你手动上传或生成的;但Google Cloud Function的/tmp是每个函数实例独立的临时存储空间,每次触发函数(或新实例启动)时这个目录都是空的,和Cloud Shell的/tmp完全不共享,所以直接访问肯定会报找不到文件的错误。

解决方案

要在Cloud Function中读取GCS上的文件,必须先把文件从GCS下载到函数的/tmp目录,再进行读取。具体步骤如下:

1. 配置依赖

创建requirements.txt文件,添加所需依赖:

pandas==2.1.4
google-cloud-storage==2.15.0

2. 修改函数代码

更新后的代码会先从GCS下载文件到/tmp,再读取DataFrame:

import pandas as pd
import os
from google.cloud import storage

def read_dataframe_from_gcs(request):
    # 替换为你的GCS存储桶名称和文件路径
    bucket_name = "你的GCS存储桶名称"
    gcs_file_path = "excel_files"  # 存储桶内的文件路径
    local_file_path = "/tmp/excel_files"

    # 初始化GCS客户端并下载文件
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(gcs_file_path)

    try:
        blob.download_to_filename(local_file_path)
    except Exception as e:
        return f"从GCS下载文件失败: {str(e)}"

    # 检查文件是否下载成功
    if not os.path.exists(local_file_path):
        return "文件未成功下载到/tmp目录"

    # 读取并处理DataFrame
    try:
        df = pd.read_csv(local_file_path)
        print(df)
        return "成功从/tmp读取DataFrame"
    except Exception as e:
        return f"读取DataFrame出错: {str(e)}"

3. 权限配置

确保Cloud Function使用的服务账号拥有GCS存储桶的读取权限(至少包含storage.objects.get权限),否则会出现下载失败的权限错误。

注意事项

  • 函数实例销毁后,/tmp目录里的文件会被清除,所以每次触发函数都需要重新下载文件
  • 如果文件体积较大,要调整Cloud Function的内存配额和超时时间,避免下载或读取过程超时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:35:01