Как получить имя устройства для монтирования в python - PullRequest
0 голосов
/ 28 октября 2018

На моем Mac я сопоставил общий ресурс SMB как Том.Я хотел бы получить реальный путь этого тома в моем коде Python.

➜  MYVOLUME pwd
/Volumes/MYVOLUME
➜  MYVOLUME mount
/dev/disk1s1 on / (apfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk1s4 on /private/var/vm (apfs, local, noexec, journaled, noatime, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
//fistname.lastname@10.10.50.20/Projects/SomeProject on /Volumes/MYVOLUME (smbfs, nodev, nosuid, mounted by user)

Я бы хотел получить //fistname.lastname@10.10.50.20/Projects/SomeProject часть.Я попытался использовать ниже, но это не дает мне фактическое местоположение SMB, которое я хочу.

def find_mount_point(self,path):
    path = os.path.abspath(path)
    while not os.path.ismount(path):
        path = os.path.dirname(path)
    return path  

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете использовать psutil библиотека

Рабочий пример

def find_sdiskpart(path):
    path = os.path.abspath(path)
    while not os.path.ismount(path):
        path = os.path.dirname(path)
    p = [p for p in psutil.disk_partitions(all=True) if p.mountpoint == path.__str__()]
    l = len(p)
    if len(p) == 1:
        print type(p[0])
        return p[0]
    raise psutil.Error

Функция вернет <class 'psutil._common.sdiskpart'> связывающую точку монтирования и имя устройства

Может использоваться какэто

try:
    p = find_sdiskpart(".")
    print p.mountpoint
    print p.device
except psutil.Error:
    print 'strange'
...