Пока приемлем небольшой разбор, это один из способов сделать это без установки win32api и без перебора всех возможных букв дисков.
from subprocess import check_output
def getDriveLetters():
args = [
'wmic',
'logicaldisk',
'get',
'caption,description,providername',
'/format:csv'
]
output = check_output(args)
results = list()
for line in output.split('\n'):
if line:
lineSplit = line.split(',')
if len(lineSplit) == 4 and lineSplit[1][1] == ':':
results.append(lineSplit[1][0])
return results
Вы также можете анализировать для определенных типов дисков, напримеркак «Сетевое подключение», чтобы получить список всех подключенных к сети букв дисков, например, добавив and lineSplit[2] == 'Network Connection'
.
В качестве альтернативы, вместо возврата списка, вы можете вернуть словарь, где ключи - это буквы дисков и значения.являются unc путями (lineSplit[3]
).Или любую другую информацию, которую вы хотите получить от wmic
.Чтобы увидеть больше вариантов: wmic logicaldisk get /?