【发布时间】:2020-07-16 04:39:22
【问题描述】:
我有一个来自第三方的 Python 代码,它在 ctypes 工具上使用 Python 2.7 和 create_string_buffer 和 string.join。我想将代码转换为 Python 3.8.3,但在以下部分出现错误。这是我使用 2to3 工具将其转换为 Python3 后的代码:
for dev in self.devices:
handle = libusb0.usb_open(dev)
self.handles.append(handle) # open and store handle
sn_char = create_string_buffer('\000'*16)
libusb0.usb_get_string_simple(handle, offset, sn_char, 16)
ser_num = ''.join(sn_char).split(b'\0',1)[0] # treat first null-byte as stop character
self.sn.append(ser_num)
我得到的错误是:
sn_char = create_string_buffer('\000'*16)
File "C:\Python\Python383\lib\ctypes\__init__.py", line 65, in create_string_buffer
raise TypeError(init)
TypeError:
我也已经尝试将 create_string_buffer 中的 init 变量设置为字节(sn_char = create_string_buffer(b'\000'*16),但我仍然收到如下错误:
ser_num = ''.join(sn_char).split(b'\0',1)[0] # treat first null-byte as stop character
TypeError: sequence item 0: expected str instance, bytes found
希望能在这里得到解决,谢谢...
【问题讨论】:
标签: python python-3.x python-2.7