Python:在Windows或Linux上获取Mount Point

noa*_*ahd 5 python linux windows mount operating-system

我需要一个函数来确定目录是否是驱动器的安装点.我发现这个代码已经适用于linux:

def getmount(path):
  path = os.path.abspath(path)
  while path != os.path.sep:
    if os.path.ismount(path):
      return path
    path = os.path.abspath(os.path.join(path, os.pardir))
  return path
Run Code Online (Sandbox Code Playgroud)

但我不确定如何在Windows上使用它.我可以假设挂载点是驱动器号(例如C :)吗?我相信可以在Windows上安装网络,所以我也希望能够检测到该安装.

Ale*_*lli 3

Windows 过去不称它们为“挂载点”[编辑:现在是这样,见下文!],并且您可以找到它们的两种典型/传统语法要么是驱动器号,例如Z:,要么是其他\\hostname(带有两个前导)反斜杠:小心转义或r'...'在 Python 中使用表示法(例如此类文字字符串)。

编辑:由于支持 NTFS 5.0 挂载点,但根据这篇文章,它们的 API 处于相当严重的状态——“损坏且记录不全”,该文章的标题如是说。也许执行微软提供的mountvol.exe是最不痛苦的方法——mountvol drive:path /L应该发出指定路径的已安装卷名称,或者只是mountvol列出所有此类安装(我不得不说“应该”,因为我现在无法检查)。您可以执行它subprocess.Popen并检查其输出。