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

标签 python windows

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

我玩了 ctypes.windll.kernel32.GetFileAttributesA() (灵感来自于: https://learn.microsoft.com/en-us/windows/desktop/fileio/determining-whether-a-directory-is-a-volume-mount-point ),但没有好的结果。

请帮忙

最佳答案

您可以使用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

关于python - 如何测试给定路径是否是挂载点 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048449/

相关文章:

python - 将列表 append 到列表,覆盖值

javascript - Django:没有提交按钮的表单导致 404 错误

python - 多个写入作为单个写入处理

c++ WINAPI 共享内存结构数组

python - 安装 cherrypy 3.2 时 ImportError : No module named http. cookies 错误

python - Pandas 按单元格中的元素进行切片

linux - Powershell 结果到 Elasticlogsearch 和 Kibana 仪表板

windows - 不能再使用 vsjitdebugger 在启动时调试进程

ruby - 如何使用 Ruby 自动化 Windows Run 应用程序

windows - 我可以向 Windows 上的应用程序发送 ctrl-C (SIGINT) 吗?