Python 3中的字符串
我正在用 Python 2.5 编写 VIX API,但现在我想把代码移植到 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
你的第二个参数需要转换成VIX API能理解的格式,因为Python 3.x现在创建的所有字符串都是Unicode格式。最简单的方法就是把你的第二个参数改成这样:
"C:\\MyVirtualMachine.vmx".encode('ascii','ignore')
这样做会得到一种字节类型的变量,这样VIX会更容易处理。