如何测试给定路径是否为挂载点(Windows)

时间:2018-10-29 15:10:53

标签: python windows

我正在寻找python代码,以测试给定的路径是否不在Windows 10的本地驱动器上(即已安装)。如果路径为K:\dir1\file2.txt,我想知道它是本地文件还是在网络上。 我检查了Internet,发现只有os.path.ismount(path)之类的Posix解决方案,但在Win10上不起作用。它仅适用于\\server\path

我玩了w / ctypes.windll.kernel32.GetFileAttributesA()(在这里启发:https://docs.microsoft.com/en-us/windows/desktop/fileio/determining-whether-a-directory-is-a-volume-mount-point),但没有很好的结果。

请帮助

1 个答案:

答案 0 :(得分:1)

您可以使用psutil

一种从您的路径中获取sdiskpart信息的工作方法

def find_mount_point(path):
    path = os.path.abspath(path)
    while not os.path.ismount(path):
        path = os.path.dirname(path)
    p = [p for p in psutil.disk_partitions(all=True) if p.mountpoint == path.__str__()]
    l = len(p)
    if len(p) == 1:
        print type(p[0])
        return p[0]
    raise psutil.Error

如果您的驱动器位于远程位置,则

p = find_mount_point("X:")
print p.opts

应该返回

rw,remote

(请参阅https://psutil.readthedocs.io/en/latest/

要从驱动器字母中获取UNC(知道它是远程),可以使用win32wnet

import win32wnet

获取diskpart(p)的代码

print win32wnet.WNetGetUniversalName(p.mountpoint, 1)

将打印

\\My_Drive\my_folder