我正在尝试制作一个在后台运行的 Python 脚本,并检查所有插入设备的 USB ID 以查看它是否与已识别 ID 列表相匹配。这将在 Linux 环境中运行,最好使用 Python 2.x
我知道在 linux 中我可以在 shell 中运行 lsusb
或者通过 os.system()
运行它,这将给我这个输出:
Bus 003 Device 009: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 003 Device 007: ID 046d:082b Logitech, Inc. Webcam C170
Bus 003 Device 005: ID 1532:0043 Razer USA, Ltd
Bus 003 Device 010: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 003 Device 008: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 003 Device 006: ID 0424:2137 Standard Microsystems Corp.
Bus 003 Device 004: ID 0451:8044 Texas Instruments, Inc.
但是,如您所见,返回的信息比我需要的多,过滤这些信息会很困难,而且会花费更多时间。我需要的是这样的:
046d:c534
046d:082b
1532:0043
05e3:0608
05e3:0608
0424:2137
0451:8044
为了让这个脚本尽可能快,有什么方法可以让我对系统运行命令并只取回所有插入的 USB ID,或者使用 grep
或者 Python 中类似的东西以某种方式过滤它?
提前致谢!
最佳答案
PyUSB具有您需要的功能以及更多。
可以使用以下代码(兼容Python2和Python3)枚举当前连接的所有设备:
import usb.core
for dev in usb.core.find(find_all=True):
print("%0.4X:%0.4X" % (dev.idVendor, dev.idProduct))
dev
对象将具有 VID、PID 和所有其他设备属性。
示例输出:
046D:C016
413C:2107
8087:0024
他们还得到了一个 tutorial , 如果想与 USB 设备交互
关于linux - 如何在 Linux 中获取所有插入设备的 USB ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053646/