【问题标题】:Strings in Python 3Python 3 中的字符串
【发布时间】:2010-09-15 21:32:11
【问题描述】:

我正在从 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

我能做什么?

【问题讨论】:

  • 我猜这与所有字符串在 3.0 中都是 unicode 的事实有关,但我不知道解决方案是什么。
  • 包含整个堆栈跟踪可能很有用。
  • 什么是整个堆栈跟踪???对不起,我是 python 初学者
  • 这是解释器在遇到异常时向您转储的所有内容(围绕“ArgumentError”的所有内容)

标签: python unicode string python-3.x ctypes


【解决方案1】:

您的第二个参数必须编码为 VIX API 可以理解的格式,因为 Python 3.x 现在将所有字符串都创建为 Unicode。最简单的方法是将您的第二个参数修改为:

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

它应该给你一个字节类型的变量,它应该更适合 VIX。

【讨论】:

  • 解决了这个问题!!非常感谢你!!我在哪里可以投票给你???
猜你喜欢
  • 2019-09-19
  • 2019-05-13
  • 2015-08-15
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
相关资源
最近更新 更多