【问题标题】:Unzip and read a .gz file from Google Cloud storage via Python (Cloud Function)通过 Python(云函数)从 Google Cloud 存储中解压缩并读取 .gz 文件
【发布时间】:2020-10-11 11:27:53
【问题描述】:

我必须在 python(云功能)中从谷歌云存储中读取一个解压缩文件。 我尝试了以下方法,但 CF 每次都崩溃。 GCS 中的文件:ABC.gz

import gzip  

def process(data, context):  
    filename = data['name']  
    with gzip.open("'"+filename+"'", 'rb') as f:  
        file_content = f.read()

请提出建议。

【问题讨论】:

  • 为什么 GCF 会崩溃?你有日志跟踪吗?
  • 嗨 Guillaume,我没有实现异常处理,因此无法理解它失败的原因。但现在我找到了真正的原因并解决了。谢谢!

标签: python google-cloud-platform google-cloud-storage cloud unzip


【解决方案1】:

这是预期的行为。当您的函数由 Cloud Storage 事件触发时,您只会获得包含事件的 data 的字典,而不是对象本身。

您应该使用 data 字典中的 namebucket 从 Cloud Storage 获取对象。这是一个可以指导您获取取自here的文件的代码:

import gzip
from google.cloud import storage

def process(data, context):
    storage_client = storage.Client()

    bucket = storage_client.bucket(data['bucket'])
    blob = bucket.blob(data['name'])
    blob.download_to_filename("/tmp/" + data['name'])

    #Here goes your code to unzip the file

考虑到您可能需要将所需的库添加到 requirements.txt 文件中,并将所需的权限授予函数的 Runtime Service Account 以访问 Cloud Storage。

【讨论】:

  • 感谢 FerVelvet。这很有帮助。 :-)
猜你喜欢
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
相关资源
最近更新 更多