iokit.ioServiceGetMatchingService在Python3下中断?
我刚买了一台运行Yosemite的mac mini(我通常使用linux)。我试图让serial.tools.list_ports.comports()在Python3下工作 我已将问题缩小到以下代码片段(摘自pyserial): 如果我在python2下运行这个,那么它可以正常工作:iokit.ioServiceGetMatchingService在Python3下中断?,python,macos,python-3.x,pyserial,Python,Macos,Python 3.x,Pyserial,我刚买了一台运行Yosemite的mac mini(我通常使用linux)。我试图让serial.tools.list_ports.comports()在Python3下工作 我已将问题缩小到以下代码片段(摘自pyserial): 如果我在python2下运行这个,那么它可以正常工作: 382 >python bug.py ('kIOMasterPortDefault =', c_void_p(None)) ('serial_port_iterator =', c_void_p(4355
382 >python bug.py
('kIOMasterPortDefault =', c_void_p(None))
('serial_port_iterator =', c_void_p(4355))
然而,当我在Python3下运行它时,它失败了(串行端口迭代器保持为c_void_p(无))
有人知道为什么在Python3下会失败吗?也许还有人知道如何修复它吗?好的-找到了答案
Python3将字符串作为unicode(宽)字符串传递,而Python2将字符串作为窄字符串传递
那么改变这条线
iokit.IOServiceMatching('IOSerialBSDClient'),
阅读
iokit.IOServiceMatching(b'IOSerialBSDClient'),
使其适用于Python2和pytho3
现在看看我能不能换成pyserial
iokit.IOServiceMatching('IOSerialBSDClient'),
iokit.IOServiceMatching(b'IOSerialBSDClient'),