Python 3中的字符串

0 投票
1 回答
803 浏览
提问于 2025-04-16 04:12

我正在用 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会更容易处理。

撰写回答