我正在寻找 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/