python - 如何使用 GAE 的 Python API 将原始字节写入谷歌云存储

标签 python google-app-engine google-cloud-storage

我正在尝试修改用户表单提交的一些二进制数据,并将其写入谷歌云存储。我试着关注 Google document's example , 但在写作时我遇到了错误,例如:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 34: ordinal not in range.

我的代码简单如下

gcs_file = gcs.open(filename,'w',content_type='audio/mp3')
gcs_file.write(buf)
gcs_file.close()

我尝试使用“wb”模式打开文件,但出现“无效模式 wb”。错误。

我在 GCS's maillist 发现了一个类似的问题这是在Java上。 GCS 开发团队的建议是使用 writeChannel.write() 而不是 PrintWriter。有人可以建议如何让它在 Python 中工作吗?

最佳答案

我想问题是 gcs_file.write() 方法需要“str”类型的数据。由于您的 buf 类型是“unicode”并且显然包含一些 Unicode 字符(可能在 ID3 标记中),您会得到 UnicodeDecodeError。所以你只需要将 buf 编码为 UTF-8:

gcs_file = gcs.open(filename,'w',content_type='audio/mp3')
gcs_file.write(buf.encode('utf-8'))
gcs_file.close()

关于python - 如何使用 GAE 的 Python API 将原始字节写入谷歌云存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18290658/

相关文章:

python - 从 python 中的字典系列中选择不同的键及其计数

ios - 如何以编程方式将现有 GCP 存储桶集成/访问到 Firebase Swift 应用程序?

Python 脚本不能作为地理处理服务正常工作

python - bool 检查不起作用

ios - 重复符号 Apple Mach-O 链接器错误

java - AppEngine - Java - 从 Web 界面插入对象

python - 在运行 Python 2.7 的 Google App Engine 中获取 Thread.Lock 需要 50% 的响应时间

google-cloud-storage - Dataproc 导入存储在谷歌云存储 (gcs) 存储桶中的 python 模块

authentication - 使用 Google Storage Transfer API 将数据从外部 GCS 传输到我的 GCS

python - 如何在保留图标的同时删除最小化/最大化按钮?