谷歌应用引擎标准应用程序禁止创建文件。在
即使tempfile也被禁用,除了临时文件,其别名为StringIO。所以我需要用StringIO对象设置驱动器文件的内容。在
我找到的唯一合适的方法是SetContentString()。在
但是该方法需要一个utf-8字符串,我得到一个decode异常-
UnicodeDecodeError:“ascii”编解码器无法解码位置0的字节0x89:序号不在范围(128)
我的代码
drive = GoogleDrive(get_drive_auth())
drive_file = drive.CreateFile()
drive_file.SetContentString(stringio_object.getvalue())
有没有办法可以从StringIO
对象设置GoogleDrive
对象的内容?在
我在GitHub上得到了答案。在
它没有文档化,但您可以直接设置GoogleDrive对象的内容
PyDrive的GoogleDriveFile.setContentString方法期望接收一个unicode字符串作为参数,以及一个可选的编码-默认值是UTF-8。在
该方法对unicode字符串进行编码,并使用编码的字符串初始化
io.BytesIO
实例,如下所示:content = io.BytesIO(input_string.encode('utf-8'))
您正在使用testring编码的UTF-8初始化您的
StringIO
实例,这将导致错误:为了避免错误,请使用unicode字符串初始化
^{pr2}$StringIO
。在Python2的
StringIO.StringIO
接受unicode或bytestrings作为输入,在这种情况下可能会导致混淆。io.StringIO
将只接受unicode作为输入,因此使用io.StringIO
可能有助于在代码中更清楚地区分unicode和bytestrings。在相关问题 更多 >
编程相关推荐