我正在寻找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),但没有很好的结果。
请帮助
答案 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