Python 3.x TypeError:初始值必须是str或None,而不是_io.BytesIO

Python 3.x TypeError:初始值必须是str或None,而不是_io.BytesIO,python-3.x,python-2.7,io,odoo-8,odoo-11,Python 3.x,Python 2.7,Io,Odoo 8,Odoo 11,大家好 我有一个模块在odoo8版本中包含导入产品和数量在库存调整中,读取文件代码在那里 import cStringIO data = base64.b64decode(self.data) self.data contain the file path.. file_input = cStringIO.StringIO(data) 它在odoo8中运行良好 我想在odoo11中实现这个模块 在odoo中,python版本是一种“不知道cStringIO的方式”。它只知道斯特里尼奥

大家好

我有一个模块在odoo8版本中包含导入产品和数量在库存调整中,读取文件代码在那里

import cStringIO


data = base64.b64decode(self.data)

self.data contain the file path..

file_input = cStringIO.StringIO(data)
它在odoo8中运行良好

我想在odoo11中实现这个模块

在odoo中,python版本是一种“不知道cStringIO的方式”。它只知道斯特里尼奥

from io import StringIO

import io

data = base64.b64decode(self.data)

file_input = io.StringIO(data)

raise error 

TypeError: initial_value must be str or None, not bytes
我更改了上面几行的代码 但这并不需要数据。因为它是返回字节的形式,所以这里需要字符串

然后下一步我有了用武之地

file_input = io.BytesIO(data) -->this

raise the error

TypeError: initial_value must be str or None, not bytes
请任何人帮我纠正这个

提前感谢。

替换此:

data = base64.b64decode(self.data)
致:


你最后的错误毫无意义。该错误表示您试图将
io.BytesIO
传递到
io.StringIO
。贴一张真实的照片;您提供的内容不可复制。data=base64.b64解码(self.data)文件\u输入=cStringIO.StringIO(数据)文件\u输入.seek(0),但它在odoo11中不起作用。对于odoo11,我想改变什么。问题是这行文件的总输入=cStringIO.StringIO(数据)是的,你说过了。但是你声明了
io.BytesIO(data)
也有同样的错误,它不应该有。你需要澄清问题(编辑问题,解决问题,不要发表评论,尤其是不能在评论中格式化的代码)。然后请告诉我你有任何关于如何改变解码csv文件从字节到字符串的想法。。。我坚持这条路线
data = base64.b64decode(self.data).decode('utf-8')