Come non ce l'ho installato sul mio Win32API campo dei notebook Ho usato questa soluzione utilizzando wmic:
import subprocess
import string
#define alphabet
alphabet = []
for i in string.ascii_uppercase:
alphabet.append(i + ':')
#get letters that are mounted somewhere
mounted_letters = subprocess.Popen("wmic logicaldisk get name", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
#erase mounted letters from alphabet in nested loop
for line in mounted_letters.stdout.readlines():
if "Name" in line:
continue
for letter in alphabet:
if letter in line:
print 'Deleting letter %s from free alphabet %s' % letter
alphabet.pop(alphabet.index(letter))
print alphabet
in alternativa si può ottenere la differenza sia da lista come questa soluzione più semplice (dopo il lancio sottoprocesso wmic come mounted_letters):
#get output to list
mounted_letters_list = []
for line in mounted_letters.stdout.readlines():
if "Name" in line:
continue
mounted_letters_list.append(line.strip())
rest = list(set(alphabet) - set(mounted_letters_list))
rest.sort()
print rest
entrambe le soluzioni sono similiarly veloce, ma immagino all'elenco riportato è meglio per qualche motivo, no?
FANTASTICO. Ha funzionato perfetto –
Ho appena provato in 2.6, e ho ottenuto una stringa vuota extra alla fine. Ancora una buona risposta. –
@ Marco: edit per correggere – Claudiu