Python 2:从驱动器号获取网络共享路径

Rob*_*boy 11 python unc network-share python-2.7

如果我使用以下内容获取所有已连接驱动器的列表:

available_drives = ['%s:' % d for d in string.ascii_uppercase if os.path.exists('%s:' % d)]
Run Code Online (Sandbox Code Playgroud)

如何获取已连接驱动器的UNC路径?

os.path只是返回z:\而不是\share\that\was\mapped\to\z

Pet*_*ain 11

使用pywin32中的win32wnet转换你的驱动器号.例如:

import win32wnet
import sys

print(win32wnet.WNetGetUniversalName(sys.argv[1], 1))
Run Code Online (Sandbox Code Playgroud)

当我运行它时,这给了我类似的东西:

C:\test>python get_unc.py i:\some\path
\\machine\test_share\some\path
Run Code Online (Sandbox Code Playgroud)


Ter*_*vis 6

以下是如何在 python \xe2\x89\xa5 3.4 中执行此操作,无需任何依赖项!*

\n\n
from pathlib import Path\n\ndef unc_drive(file_path):\n    return str(Path(file_path).resolve())\n
Run Code Online (Sandbox Code Playgroud)\n\n

*注意:我刚刚发现这种方法失败的情况。我公司的一个网络共享具有权限设置,因此此方法会引发PermissionError. 在这种情况下,win32wnet.WNetGetUniversalName是一个合适的后备方案。

\n