如何获得连接到系统的USB驱动器的目录?

Fla*_*dun 4 python directory usb path

我需要获取为usb驱动器创建的目录的路径(我认为它类似于/ media/user/xxxxx),这是我正在制作的一个简单的USB大容量存储设备浏览器.任何人都可以建议最好/最简单的方法吗?我正在使用Ubuntu 13.10机器,并将在Linux设备上使用它.

在python中需要这个.

m.w*_*ski 13

这应该让你开始:

#!/usr/bin/env python

import os
from glob import glob
from subprocess import check_output, CalledProcessError

def get_usb_devices():
    sdb_devices = map(os.path.realpath, glob('/sys/block/sd*'))
    usb_devices = (dev for dev in sdb_devices
        if 'usb' in dev.split('/')[5])
    return dict((os.path.basename(dev), dev) for dev in usb_devices)

def get_mount_points(devices=None):
    devices = devices or get_usb_devices() # if devices are None: get_usb_devices
    output = check_output(['mount']).splitlines()
    is_usb = lambda path: any(dev in path for dev in devices)
    usb_info = (line for line in output if is_usb(line.split()[0]))
    return [(info.split()[0], info.split()[2]) for info in usb_info]

if __name__ == '__main__':
    print get_mount_points()
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?

首先,我们分析/sys/blocksd*文件(礼貌/sf/answers/271727221/)筛选出USB设备.稍后,您mount只为这些设备调用和解析行的输出.

当然,它们可能是一些边缘情况,当这不起作用,可移植性问题等.或更好的方法来做到这一点.但是对于更多信息,您应该寻求有关SuperUser或ServerFault的帮助,以及更有经验的Linux黑客.


use*_*981 6

我必须修改 @m.wasowski 的代码以使其在 Python3.5.4 上工作,如下所示。

def get_mount_points(devices=None):
    devices = devices or get_usb_devices()  # if devices are None: get_usb_devices
    output = check_output(['mount']).splitlines()
    output = [tmp.decode('UTF-8') for tmp in output]

    def is_usb(path):
        return any(dev in path for dev in devices)
    usb_info = (line for line in output if is_usb(line.split()[0]))
    return [(info.split()[0], info.split()[2]) for info in usb_info]
Run Code Online (Sandbox Code Playgroud)