VirtualBox api: функция "take_screen_shot_to_array" вызывает ошибку Unicode только с python3, как получить доступ к методу XPCOMObject для отладки? - PullRequest
0 голосов
/ 10 марта 2019

Следующий код прекрасно работает в python2.7, но с python3.6,

import virtualbox
vbox = virtualbox.VirtualBox()
vm = vbox.find_machine("my_vbox_machine_name")
session = vm.create_session()
display = session.console.display
png = display.take_screen_shot_to_array(0,10,10,virtualbox.library.BitmapFormat.png)

конец этой ошибки:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/username/.local/lib/python3.6/site-packages/virtualbox/library.py", line 23684, in take_screen_shot_to_array
    in_p=[screen_id, width, height, bitmap_format])  
  File "/home/username/.local/lib/python3.6/site-packages/virtualbox/library_base.py", line 190, in _call
    return self._call_method(method, in_p=in_p)
  File "/home/username/.local/lib/python3.6/site-packages/virtualbox/library_base.py", line 231, in _call_method
    ret = method(*in_params)
  File "<XPCOMObject method 'takeScreenShotToArray'>", line 3, in takeScreenShotToArray
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

Я полагаю, это связано с различием строкового объекта между python2 и python3.


Я использую, чтобы увидеть реальный путь к файлу в поле "File" трекбэка python, но на этот раз это не так, поэтому я немного разочарован ...

Я бы исправил это, но я не знаю, как получить доступ к файлу: <XPCOMObject method 'takeScreenShotToArray'>?

...