Comme je ne l'ai installé sur mon win32api domaine des ordinateurs portables j'ai utilisé cette solution à l'aide 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
Sinon, vous pouvez obtenir la différence à la fois cette liste comme solution plus simple (après le lancement de sous-processus wmic comme mount_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
les deux solutions sont tout aussi rapides, mais je suppose que la liste est meilleure pour une raison quelconque, non?
FANTASTIQUE. Travaillé parfait. –
Je l'ai juste essayé en 2.6, et j'ai obtenu une chaîne vide supplémentaire à la fin. Toujours une bonne réponse. –
@Mark: modifier pour corriger – Claudiu