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中运行?
我想问题是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)
| 归档时间: |
|
| 查看次数: |
1868 次 |
| 最近记录: |