Подтвердить что ты не робот

Python 2: получить общий сетевой путь от буквы диска

Если для получения списка всех подключенных дисков я использую следующее:

available_drives = ['%s:' % d for d in string.ascii_uppercase if os.path.exists('%s:' % d)]

Как получить путь UNC к подключенным дискам?

os.path просто возвращает z:\ вместо \share\that\was\mapped\to\z

4b9b3361

Ответ 1

Используйте win32wnet из pywin32 для преобразования букв вашего диска. Например:

import win32wnet
import sys

print(win32wnet.WNetGetUniversalName(sys.argv[1], 1))

Это дает мне что-то вроде этого, когда я запускаю его:

C:\test>python get_unc.py i:\some\path
\\machine\test_share\some\path

Ответ 2

Используя ctypes и код, показанный в первом ответе в этом сообщении: Получите полное имя компьютера из буквы сетевого диска в python, можно получить пути для каждого сетевого диска или несколько выбранных.

Предоставленная функция get_connection выдает ошибку, если диск не является сетевым диском, либо локальным, либо съемным диском, это можно объяснить с помощью

# your drive list
available_drives = ['%s:' % d for d in string.ascii_uppercase if os.path.exists('%s:' % d)]
for drive in available_drives:
    try:
        # function from linked post
        print(get_connection(drive))
    except WindowsError: # thrown from local drives
        print('{} is a local drive'.format(drive))