python - 检测何时连接了新的 USB 设备(即插即用)

标签 python linux usb debian

使用 this answer ,我们能够查询到所有在精确时刻连接的 USB 设备。

我有一个在 Linux(Debian 或 RaspBian)上运行的 Python 程序来执行特定任务,但我还希望该程序在连接 USB 设备时进行监听 ,并在发生这种情况时触发特定操作。

我正在考虑做一个新的 thread :

while True:
  list_USB_devices()   # using https://stackoverflow.com/a/8265634/1422096
  see_if_new_devices_in_this_list()
  time.sleep(2)        # wait 2 seconds

但我觉得这个解决方案不是很优雅。

如果连接了新的 USB 设备,在 Python 程序的后台检测有什么更干净的解决方案?

我的程序的应用示例:监听是否连接了新的 USB-MIDI 键盘/设备,如果是,则使用 rtmidi-python 附加它 “即插即用!”

最佳答案

查看 gio 库(glib 的一部分)。您可以在创 build 备时附加 watch 和连接回调。这样你根本不需要轮询。在设备目录上设置监视,查找文件创建。过滤掉不感兴趣的文件。

您可能还可以查看“udev”系统本身,并编写规则以在新 USB 设备出现时执行某些操作。

关于python - 检测何时连接了新的 USB 设备(即插即用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28959289/

相关文章:

php - 如何从 PHP 的控制台中删除文本?

linux - linux命令提示符中的 "%"和 "$"有什么区别?什么时候更受青睐?

java - Windows 下的 USB 编程

audio - 在两个同时使用的 USB 音频设备上拆分立体声 channel

python - 如果相同则删除多维列表中的元组

python - 以下 Python 代码有什么问题?

python - map/filter/reduce 函数序列的干净代码

python - SymPy 无法求解四阶多项式方程

linux - 如何构建在 Linux 上动态链接的 qt 应用程序(非共享库)

c++ - Qt 安全删除设备