TypeError: initial_value должно быть str или None, а не _io.BytesIO

привет всем...

у меня есть один модуль в версии 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

пожалуйста, помогите мне исправить это...

Заранее спасибо..


person Maddela Tejaswini4029    schedule 15.06.2018    source источник
comment
Ваша последняя ошибка не имеет смысла. Ошибка означает, что вы пытались передать io.BytesIO в io.StringIO. Разместите настоящий минимально воспроизводимый пример; то, что вы предоставили, не воспроизводится.   -  person ShadowRanger    schedule 15.06.2018
comment
data = base64.b64decode(self.data) file_input = cStringIO.StringIO(data) file_input.seek(0)   -  person Maddela Tejaswini4029    schedule 15.06.2018
comment
но он не работает в odoo11. для работы odoo11, что я хочу изменить. проблема в том, что эта строка file_input = cStringIO.StringIO(data)   -  person Maddela Tejaswini4029    schedule 15.06.2018
comment
Да, ты сказал это. Но затем вы заявили, что io.BytesIO(data) имеет ту же ошибку, что и не должно. Необходимо уточнить проблему (отредактировать вопрос, исправить, не оставлять комментарии, особенно с кодом, который нельзя форматировать в комментариях).   -  person ShadowRanger    schedule 15.06.2018
comment
хорошо, я отредактировал вопрос. тогда, пожалуйста, скажите мне, что у вас есть какие-либо идеи о том, как изменить файл декодирования csv из байта в строку... я застрял в этой строке   -  person Maddela Tejaswini4029    schedule 15.06.2018
comment
в python3 cstringIO и stringIO удалены. вместо использования io.stringIO, когда я использую это, возникает ошибка TypeError: initial_value должна быть str или None, а не bytes........, тогда я меняю io.stringIO на io.BytesIO, файл не читается. вызвать исключение Недопустимый файл!. пожалуйста скажите что делать   -  person Maddela Tejaswini4029    schedule 15.06.2018


Ответы (1)


заменить это:

data = base64.b64decode(self.data)

to:

data = base64.b64decode(self.data).decode('utf-8')
person Varun Parmar    schedule 04.08.2019