2010-09-15 129 views
0

我從Python 2.5的編程VIX API,但現在我想將代碼移植到Python 3.2字符串在Python 3

此功能打開虛擬機:

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

Previusly這個功能是從進口與此代碼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

我能做些什麼?

+0

我猜這是關係到一個事實,即所有字符串去的Unicode 3.0,但我不知道解決的辦法是什麼。 – recursive 2010-09-15 21:34:28

+1

包括整個堆棧跟蹤可能是有用的。 – Daenyth 2010-09-15 21:37:52

+0

什麼是整個堆棧跟蹤???在python – igferne 2010-09-15 21:46:05

回答

5

你的第二個參數必須被編碼到的是,VIX API就明白了,因爲Python 3.x的現在創建所有字符串爲Unicode格式。最簡單的方法是修改您的第二個參數爲:

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

這應該給你類型字節,它應該是更可口VIX的變量。

+0

使這一問題得到固溶!非常感謝你!!我可以在哪裏投票? – igferne 2010-09-15 22:44:47