Струны в Python 3 - PullRequest
       11

Струны в Python 3

0 голосов
/ 16 сентября 2010

Я программирую VIX API с python 2.5, но теперь я хочу перенести код на python 3.2

Эта функция открывает виртуальную машину:

self.jobHandle = self.VixLib.vix.VixVM_Open(self.hostHandle,
                                            "C:\\MyVirtualMachine.vmx", None, None)

Ранее эта функция импортировалась из Vix.dll с этим кодом:

vix.VixVM_Open.restype = VixHandle
vix.VixVM_Open.argtypes = [VixHandle,c_char_p,POINTER(VixEventProc),c_void_p]

В 2.5 этот код верен, но в 3.2 он возвращает ctypes.ArgumentError

Что я могу сделать?

1 Ответ

5 голосов
/ 16 сентября 2010

Ваш второй аргумент должен быть закодирован в формате, понятном для API VIX, поскольку Python 3.x теперь создает все строки как Unicode.Простейшим подходом было бы изменить ваш второй аргумент следующим образом:

"C:\\MyVirtualMachine.vmx".encode('ascii','ignore')

, который должен дать вам переменную байтов типа, которая должна быть более приемлемой для VIX.

...