TypeError:file()参数1必须是不带NULL字节的编码字符串,而不是str odoo

anand mbs

python版本是2.8.2,并在eclipse中使用。尝试执行以下命令时出现此错误:

该函数是:

@api.one
@api.depends('image')
def _compute_image_details(self):
    if self.image:
        image_content = self.image.decode('base64')
        print type(self.image)
        print type(image_content)

        # File size
        self.size = len(image_content)

        # Camera make and model from EXIF tags
        img = PIL.Image.open(image_content)
        exif_tags = img._getexif()

        # 0x010f is a numeric code for the "make" exif field
        # You can find a list of fields here: exiv2.org/tags.html
        self.camera_maker = exif_tags.get(0x010f)

引发的错误是:

Traceback (most recent call last):
  File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 537, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 574, in dispatch
    result = self._call_function(**self.params)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 310, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 307, in checked_call
    return self.endpoint(*a, **kw)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 803, in __call__
    return self.method(*args, **kw)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 403, in response_wrap
    response = f(*args, **kw)
  File "/home/next/WORKSPACE/odoo-8.0/addons/web/controllers/main.py", line 944, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/home/next/WORKSPACE/odoo-8.0/addons/web/controllers/main.py", line 936, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/api.py", line 363, in old_api
    result = method(recs, *args, **kwargs)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/models.py", line 5873, in onchange
    newval = record[name]
  File "/home/next/WORKSPACE/odoo-8.0/openerp/models.py", line 5571, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "/home/next/WORKSPACE/odoo-8.0/openerp/fields.py", line 820, in __get__
    self.determine_draft_value(record)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/fields.py", line 928, in determine_draft_value
    self._compute_value(record)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/fields.py", line 867, in _compute_value
    self.compute(records)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/api.py", line 239, in wrapper
    return new_api(self, *args, **kwargs)
  File "/home/next/WORKSPACE/odoo-8.0/openerp/api.py", line 397, in new_api
    result = [method(rec, *args, **kwargs) for rec in self]
  File "/home/next/WORKSPACE/odoo-8.0/addons/transform_webservice_example/image_example.py", line 33, in _compute_image_details
    img = PIL.Image.open(image_content)
  File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1955, in open
    fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, not str

请帮我解决这个问题。

其他参考说明了文件的URL。这是不同的情况。

丹妮德

您尝试打开文件的base64解码内容,应该打开文件本身。

PIL.Image.open(self.image)

以这个为例,重现您得到的错误

>>> open('\0')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
>>>

该字符'\0'被视为NullByte解码图像包含的字符

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

训练 '\x00' s 和 TypeError: stat() 参数 1 必须是没有空字节的编码字符串,而不是 str

来自分类Dev

我必须以root用户身份运行./odoo.py而不是仅启动odoo服务

来自分类Dev

Odoo:按名称访问字段(以字符串形式提供)

来自分类Dev

将字符串转换为浮点时间odoo 9

来自分类Dev

继承 qweb 报告并替换字符串 odoo 9

来自分类Dev

Odoo-将null写入数字列

来自分类Dev

TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是'datetime.datetime'

来自分类Dev

TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是“列表”

来自分类Dev

TensorFlow:TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是'NoneType'

来自分类Dev

TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是“ NoneType”深度学习

来自分类Dev

我收到 TypeError:"int() 参数必须是字符串、类似字节的对象或数字,而不是 'Question'"

来自分类Dev

Python3 Odoo TypeError sys.print不是函数

来自分类Dev

如何从Odoo 8前端删除Powered by Odoo#1开源电子商务页脚?

来自分类Dev

如何从Odoo 8的前端删除Powered by Odoo#1开源电子商务页脚?

来自分类Dev

Odoo,create()缺少1个必需的位置参数:'vals'

来自分类Dev

缺少 1 个必需的位置参数:odoo 中的“self”?

来自分类Dev

zeromq:TypeError:字符串索引必须是整数,而不是str

来自分类Dev

Scrapy:TypeError:字符串索引必须是整数,而不是 str?

来自分类Dev

python TypeError:参数1必须是字符串或只读字符缓冲区,而不是None

来自分类Dev

TypeError:参数1必须是字符串或只读字符缓冲区,而不是None

来自分类Dev

TypeError:参数应为字符串,字节或整数,而不是PosixPath

来自分类Dev

TypeError:float()参数必须是字符串或数字,而不是“ PolyCollection”

来自分类Dev

TypeError:float()参数必须是字符串或数字,而不是“ Profile”

来自分类Dev

在utf8中编码字节字符串

来自分类Dev

OpenERP / Odoo-字符串内的引用不起作用-cr.execute(SQL)

来自分类Dev

Odoo 12在尝试从记录访问模型记录时打开TypeError

来自分类Dev

TypeError:'tuple'对象不可调用-Odoo v8

来自分类Dev

odoo t-raw / t-if条件内的参数

来自分类Dev

Odoo报告-当值为null时显示0

Related 相关文章

  1. 1

    训练 '\x00' s 和 TypeError: stat() 参数 1 必须是没有空字节的编码字符串,而不是 str

  2. 2

    我必须以root用户身份运行./odoo.py而不是仅启动odoo服务

  3. 3

    Odoo:按名称访问字段(以字符串形式提供)

  4. 4

    将字符串转换为浮点时间odoo 9

  5. 5

    继承 qweb 报告并替换字符串 odoo 9

  6. 6

    Odoo-将null写入数字列

  7. 7

    TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是'datetime.datetime'

  8. 8

    TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是“列表”

  9. 9

    TensorFlow:TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是'NoneType'

  10. 10

    TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是“ NoneType”深度学习

  11. 11

    我收到 TypeError:"int() 参数必须是字符串、类似字节的对象或数字,而不是 'Question'"

  12. 12

    Python3 Odoo TypeError sys.print不是函数

  13. 13

    如何从Odoo 8前端删除Powered by Odoo#1开源电子商务页脚?

  14. 14

    如何从Odoo 8的前端删除Powered by Odoo#1开源电子商务页脚?

  15. 15

    Odoo,create()缺少1个必需的位置参数:'vals'

  16. 16

    缺少 1 个必需的位置参数:odoo 中的“self”?

  17. 17

    zeromq:TypeError:字符串索引必须是整数,而不是str

  18. 18

    Scrapy:TypeError:字符串索引必须是整数,而不是 str?

  19. 19

    python TypeError:参数1必须是字符串或只读字符缓冲区,而不是None

  20. 20

    TypeError:参数1必须是字符串或只读字符缓冲区,而不是None

  21. 21

    TypeError:参数应为字符串,字节或整数,而不是PosixPath

  22. 22

    TypeError:float()参数必须是字符串或数字,而不是“ PolyCollection”

  23. 23

    TypeError:float()参数必须是字符串或数字,而不是“ Profile”

  24. 24

    在utf8中编码字节字符串

  25. 25

    OpenERP / Odoo-字符串内的引用不起作用-cr.execute(SQL)

  26. 26

    Odoo 12在尝试从记录访问模型记录时打开TypeError

  27. 27

    TypeError:'tuple'对象不可调用-Odoo v8

  28. 28

    odoo t-raw / t-if条件内的参数

  29. 29

    Odoo报告-当值为null时显示0

热门标签

归档