在Windows中使用Python确定共享驱动器的网络路径

时间:2019-05-08 20:33:02

标签: python windows

请考虑Windows机器上通过网络共享的本地驱动器。

驱动器在本地映射到D:\,并且由本地计算机通过网络共享,名称为data。因此,该驱动器的网络路径将为\\computer-name\data

给定来自主机的驱动器号D,是否可以用Python以编程方式确定共享网络路径的名称?

预期的行为是:

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

唯一的限制是,此操作应在没有管理员权限的情况下进行。

1 个答案:

答案 0 :(得分:0)

我可以通过将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