gpt4 book ai didi

python - USB 驱动器检测 (Linux)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:17 28 4
gpt4 key购买 nike

在我的 Python 程序中,我需要不断检查是否有新的 USB 驱动器连接到我的设备,运行 x86 Linux (Ubuntu)。不要将其他 USB 设备误认为是 USB 驱动器,例如键盘、鼠标或其他任何设备。执行此操作的最佳方法是什么?

在我的特殊情况下,我有一个自定义媒体播放器设备,该设备由运行 Linux 的 x86 单板 PC 提供支持。

最佳答案

大多数 linux 系统已经有一些机制可以检测新的 USB 设备并自动挂载它们(如果它们是存储设备)等等。您可以做的是使用 python 的 inotify 库接口(interface)来监控/mnt 或/dev。

要查看它是如何工作的,请安装 inotify-tools 或一些类似的命名包,您可以执行以下操作:

$ inotifywait -m -e create /tmp &

此命令监视 (-m)/tmp 以创建 (-e create) 新文件或目录。例如 touch/tmp/x 会输出

/tmp/ CREATE x

您可以从 python 及其 python-inotify 或类似包中执行相同的操作。有 pyinotify 命令,但更有用的是您可以编写等效的 python 程序:

import pyinotify
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm)
wm.add_watch('/tmp', pyinotify.IN_CREATE)
notifier.loop()

当您 rm 并重新创建/tmp/x 时,会打印:

<Event dir=False mask=0x100 maskname=IN_CREATE name=x path=/tmp pathname=/tmp/x wd=1 >

参见 wiki用于教程等。


在你的情况下,你可以监视 /mnt 来检测新安装的文件系统,或者 /dev 来发现新设备,例如 /dev/sdb/dev/sdb1。 Inotify 不是递归的,因此只返回直接在监视目录中的更改。

关于python - USB 驱动器检测 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32241987/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com