如何在Python中找到闪存驱动器自动挂载的位置?

时间:2016-10-28 14:11:28

标签: linux python-3.x

如何(在Python 3.x中)找到闪存驱动器在我当时正在使用的计算机上插入时自动挂载的默认位置? (它可以是各种非特定的Linux发行版和旧版本/新版本。根据它的不同,它可以安装在/ media / driveLabel,/ media / userName / driveLabel,/ mnt / driveLabel等位置。 。)

我满足于假设/ media / driveLabel,直到Ubuntu更新其默认挂载位置以包含用户名(因此,现在我无法使用静态位置来存储我在计算机上制作的便携式应用程序的书签文件设置,因为我使用多个用户名)。因此,每次使用新计算机或用户时,都需要更新已添加书签的文件的路径。请注意,硬盘驱动器上的文件也会被加入书签(因此,不需要更改这些文件;如果您不在适合的计算机上,则不会加载它们。)

无论如何,如果这里有解决方案,现在我不满足于使用/媒体挂载。我希望能够找到这个位置,而不必安装一些东西,并且如果可能的话首先找到路径的安装位置(即使这可以帮助我解决引发问题的问题)。似乎应该为此提供一些条款,无论是用Python还是其他方式。

换句话说,我希望能够知道我的闪存驱动器的安装位置(没有驱动器标签部分) - 而不是它已安装的地方。

编辑:如果/ media / username / drivelabel非常适合支持自动挂载的所有主要发行版的自动挂载(至少是最新版本,因为我似乎记得Ubuntu并不总是包含用户名),随时让我知道,因为这几乎回答了这个问题。或者,您可以告诉我一个特定于哪些主要发行版的自动闪存驱动器安装位置列表。我想这可行(虽然如果他们改变了东西我就不得不更新它。)

FYI编辑:对于我的问题,我可能只是用书签保存挂载位置(所以我的程序知道打开它时书签路径的哪一部分),并用书签路径替换它用户加载书签时的新当前安装位置。

3 个答案:

答案 0 :(得分:1)

为什么不使用Udev强制自己定位,只需创建一个UDEV脚本,继续监听驱动器插入并将插入的USB驱动器映射到机器上的特定位置

答案 1 :(得分:1)

某些Linux系统不会像Ubuntu那样自动挂载连接到它们的设备,但在版本中,您可以在系统中查看以获取此信息。

不幸的是,我只能为Linux CLI回答这个问题,因为我不太了解python

首先,您可以使用blkid获取设备的UUID:

$ blkid
/dev/sda1: UUID="4c58b621-59b6-4d05-a785-4671856520de" TYPE="ext4" PARTUUID="7763f5b3-01"
/dev/sda5: UUID="cf64e358-8be2-42f3-972d-70f36469279c" TYPE="swap" PARTUUID="7763f5b3-05"
/dev/sdb1: UUID="05a42322-cd8b-47e2-bc4c-612c7a577626" TYPE="ext3" PARTUUID="5893092a-01"
/dev/sdc1: UUID="64d7548d-689d-407a-9d23-68085476927a" TYPE="ext4" PARTUUID="000ced26-01"
/dev/sdc5: UUID="87cec41f-aa0b-4469-9e92-6ec549ea0b34" TYPE="swap" PARTUUID="000ced26-05"

确定哪个UUID是您的磁盘。完成后,您可以使用blkid确定磁盘上的/dev/sd*

$ blkid | awk -F":" '$2~"05a42322-cd8b-47e2-bc4c-612c7a577626" {print $1}'
/dev/sdb1

然后你可以点击/proc/mounts,其中mount命令在mounts上写入信息:

$ awk '$1~"/dev/sdb1" {print $2}' /proc/mounts
/media/sdb1

或者将这两者放在一起:

$ awk -v device=`blkid | awk -F":" '$2~"05a42322-cd8b-47e2-bc4c-612c7a577626" {print $1}'` '$1~device {print $2}' /proc/mounts
/media/sdb1

答案 2 :(得分:1)

在您对挂载路径执行任何操作之前,您可以要求用户指定他们希望使用的设备,例如/ dev / sdb1 / dev / sdb2

可以使用命令的输出

df -h

提供以下输出

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        19G  6.5G   12G  37% /
udev             10M     0   10M   0% /dev
tmpfs           810M  9.0M  801M   2% /run
tmpfs           2.0G   68K  2.0G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           405M  4.0K  405M   1% /run/user/115
tmpfs           405M  8.0K  405M   1% /run/user/1000

运行命令

df -h <path to device user wishes to use> | awk '{print $6}'

返回设备安装位置的路径。在此之后,您已经实现了您正在寻找的目标。 所有这些都可以在你的python脚本中完成。

import subprocess
subprocess.call('path to script')

我希望这些信息让您更接近您的目标。