请考虑Windows机器上通过网络共享的本地驱动器。
驱动器在本地映射到D:\
,并且由本地计算机通过网络共享,名称为data
。因此,该驱动器的网络路径将为\\computer-name\data
。
给定来自主机的驱动器号D
,是否可以用Python以编程方式确定共享网络路径的名称?
预期的行为是:
drive_letter = "D"
get_network_path(drive_letter)
>>> \\computer-name\data
唯一的限制是,此操作应在没有管理员权限的情况下进行。
答案 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