Как проверить, является ли данный путь точкой монтирования (Windows) - PullRequest
0 голосов
/ 29 октября 2018

Я ищу код Python для проверки, находится ли данный путь не на локальном диске (то есть он смонтирован) в Windows 10. Если путь K:\dir1\file2.txt, я хочу знать, является ли он локальным файлом или он находится в сети. Я проверил интернет и нашел решение для Posix только как os.path.ismount(path), но оно не работает на 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 голосов
/ 29 октября 2018

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...