Определить сетевой путь общего диска на Windows в Python - PullRequest
0 голосов
/ 08 мая 2019

Рассмотрим локальный диск на компьютере Windows, который используется по сети.

Диск привязан к D:\ локально и используется локальным компьютером по сети с именем data.Следовательно, сетевой путь для этого диска будет \\computer-name\data.

Можно ли программно определить имя общего сетевого пути в Python, учитывая букву диска D с хост-машины?

Ожидаемое поведение:

drive_letter = "D"
get_network_path(drive_letter)
>>> \\computer-name\data

Единственным дополнительным ограничением является то, что это должно работать без прав администратора.

1 Ответ

0 голосов
/ 10 мая 2019

Мне удалось определить полный сетевой путь с помощью модуля subprocess с net share, в котором будут перечислены все общие диски.

import platform
import subprocess


def get_network_path(drive_letter: str):
    s = subprocess.check_output(['net', 'share']).decode()  # get shared drives
    for row in s.split("\n")[4:]:  # check each row after formatting
        split = row.split()
        if len(split) == 2:  # only check non-default shared drives
            if split[1] == '{}:\\'.format(drive_letter):
                return r"\\{}\{}".format(platform.node(), split[0])

print(get_network_path("D"))   
>>> \\computer-name\data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...