如何使用GAE的Python API将原始字节写入Google云存储

use*_*101 6 python google-app-engine google-cloud-storage

我正在尝试修改用户表单提交的一些二进制数据,并将其写入Google云端存储.我试图关注Google文档的示例,但在写完后我遇到了以下错误:

UnicodeDecodeError:'ascii'编解码器无法解码位置34中的字节0xe5:序数不在范围内.

我的代码如下

gcs_file = gcs.open(filename,'w',content_type='audio/mp3')
gcs_file.write(buf)
gcs_file.close()
Run Code Online (Sandbox Code Playgroud)

我尝试用'wb'模式打开文件,但得到了"无效模式wb".错误.

我在GCS的maillist上找到了类似的问题,这个问题是关于Java的.GCS开发团队的建议是使用writeChannel.write()而不是PrintWriter.任何人都可以建议如何使它在Python中运行?

Den*_*igo 6

我想问题是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()
Run Code Online (Sandbox Code Playgroud)