【发布时间】:2018-11-25 04:37:20
【问题描述】:
大家好...
我在odoo8版本中有一个模块,它包含在读取文件代码中导入库存调整中的产品和数量
import cStringIO
data = base64.b64decode(self.data)
self.data contain the file path..
file_input = cStringIO.StringIO(data)
在 odoo8 中运行良好。
我想在odoo11中实现这个模块
在 odoo python 版本中改变了它不知道 cStringIO 的方式。它只知道 StringIO
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
请任何人帮我纠正这个问题...
提前谢谢..
【问题讨论】:
-
您的最后一个错误毫无意义。该错误意味着您尝试将
io.BytesIO传递给io.StringIO。发一个真实的minimal reproducible example;您提供的内容无法重现。 -
data = base64.b64decode(self.data) file_input = cStringIO.StringIO(data) file_input.seek(0)
-
但它在 odoo11 中不起作用。对于 odoo11 工作我想改变什么。问题是总这一行 file_input = cStringIO.StringIO(data)
-
是的,你说过。但是你声称
io.BytesIO(data)有同样的错误,它不应该。您需要澄清问题(编辑问题,解决问题,不要发布 cmets,尤其是无法在 cmets 中格式化的代码)。 -
好的,我已经编辑了这个问题。那么请告诉我你对如何将解码 csv 文件从字节更改为字符串有任何想法......我已经坚持了这一行
标签: python-3.x python-2.7 io odoo-8 odoo-11