PyUSB:为啥 bus.dirname 和 dev.filename 是空字符串?

Posted

技术标签:

【中文标题】PyUSB:为啥 bus.dirname 和 dev.filename 是空字符串?【英文标题】:PyUSB: Why are bus.dirname and dev.filename empty string?PyUSB:为什么 bus.dirname 和 dev.filename 是空字符串? 【发布时间】:2016-11-28 23:38:19 【问题描述】:

我对使用 PyUSB 很陌生。我有一些 USB 设备连接到我的机器,并试图获取它们的一些属性。根据我从其他使用 PyUSB 的示例中学到的知识,我在 Linux 中制作了一个简短的程序。这是程序的一个片段:

busses = usb.busses()
   for bus in busses:
       devices = bus.devices
       for dev in devices:
          print dev.filename
          print bus.dirname
          print dev.idProduct

当我检查输出时,所有设备的 dev.filename 和 bus.dirname 都是空字符串。 dev.idProduct 是正确的。

有人可以帮忙解决这些问题吗? (1) 什么是 dev.filename? (2)什么是bus.dirname? (3) 这两个属性都可以为空吗?

谢谢。

【问题讨论】:

我想你应该在PyUSB github 页面上问这个问题。快速浏览它的代码会发现device.filename 被初始化为一个空字符串,并且从未分配给其他任何东西。 bus.dirname (github.com/walac/pyusb/blob/…) 也是如此。 尝试访问/dev ?你是root 吗? 【参考方案1】:

设备号在devnum中:

busses = usb.busses()
   for bus in busses:
       devices = bus.devices
       for dev in devices:
          print dev.devnum #filename is empty!!
          print bus.dirname
          print dev.idProduct

【讨论】:

解释有点短……你能详细说明一下吗? 因此,如果您查看 legacy.py 中 pyusb 的代码,设备类将填充所有字段。文件名留空,但 devnum 填充了设备地址:self.devnum = dev.address

以上是关于PyUSB:为啥 bus.dirname 和 dev.filename 是空字符串?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Python pyusb usb.core 访问由于权限而被拒绝,为啥 rules.d 不能修复它?

PyUSB:从 USB 设备读取

pyusb 读取操作总是返回 '1'

Windows 8.1 上的 Pyusb - 没有可用的后端 - 如何安装 libusb?

使用 PyUSB 通过 USB 发送数据

PyUSB 设备已声明,detach_kernel_driver 返回未找到实体