python - 如何从 Google Cloud Functions 读取存储在 Google Cloud Storage 上的非文本文件
问题描述
我需要从 Google Cloud Functions 读取文件。我要阅读的文件托管在 Google Cloud Storage 中。该文件不是一个文本文件,它阻止我使用download_as_string
.
到目前为止,我已经尝试以所有标准方式直接从对象中读取gcs.open(file)
,但是没有定义 gcs(即使我确实在文件顶部导入了 cloudstorage as gcs)。
我能找到的最接近的事情是如何使用 python 从谷歌云读取 mp3 数据(我想读取一个 MP4 文件)但后来我尝试了,blob_uri = gf.open(r'gs://' + bucket_name + '/' + file_name)
我总是收到以下错误FileNotFoundError: [Errno 2] No such file or directory: gs://<yourbucket>/<filename>
我也试过了bucket.get_blob(data['name'])
,和bucket.get_blob(data)
。
因为是 mp3 文件,所以无法以字符串形式打开(如file = blobfile.download_as_string()
)
我还尝试使用请求尝试将文件转换为比特率,然后读取该数据,但是由于只读访问云功能需要,必须创建一个新文件来打开现有文件无法正常工作(我也尝试直接上传到云存储,但是因为 CS 返回一个博客,我无法写入文件)。
是否可以直接从 Google Cloud Functions 直接从 Google Cloud Storage 上托管的(非文本)文件读取?如果是这样,我该怎么做?
解决方案
请记住:blob 表示二进制大对象。因此,是的,可以读取非字符串 blob!
在 Python 中,您可以download_to_filename
按照文档中的描述
推荐阅读
- java - 如何在java中编写更短的双数?
- vb.net - 在 vb.net 中从 EWS 打印邮件
- kotlin - 如何创建一个将已绘制块添加到列表的函数?
- http - 如何区分空文件和丢失文件的多部分表单数据?
- c++ - 在 C++ 中获取数组中相同值的数量
- windows - Artifactory 升级 6.16.2 -> 7.12.6 失败,应用程序无法初始化:不可用:网络因未知原因关闭
- java - Spring Cloud Stream 在发送后处理消息
- python - Pandas 通过为数据帧之间的每个重复行仅删除一行来合并两个数据帧
- php - 如何在一个 Query PHP 中加入 mongoDB 中的多个集合以获取具体数据
- sql - PostgreSQL DROP ROLE 抛出错误:无法删除角色,因为它是数据库系统需要的