2016-07-02 9 views
1

Ich fing an, ein Programm für Spaß zu machen, als ich auf ein Problem stieß. Das Problem war, dass ich den Laufwerksbuchstaben mit installierten Windows (Root-Laufwerk) finden wollte. Ich nahm an, dass es dafür eine Funktion gab, aber ich suchte eine Weile und konnte keine finden.Python, finde den Laufwerksbuchstaben mit installierten Fenstern

Ich schrieb diesen Code, um zu tun, was ich gerade beschrieben habe. Ist dieser Code überflüssig und bin ich ein Idiot? Es ist wahrscheinlich eine viel einfachere Art und Weise ...

def root(): 

root = "" 
i = 0 
drives = win32api.GetLogicalDriveStrings() 
drives = drives.split("\000")[:-1] 

for i in range(0, len(drives)): 
    drives[i] = drives[i].replace("\\", "/") 

i = 0 
for i in range(0, len(drives)): 

    if os.path.exists(drives[i] + "Windows"): 
     root = drives[i] 
     break 

return root 

nehme ich an jemand diese für Testzwecke verwenden können, oder was nicht.

+0

Sie haben sowohl "GetSystemDirectory" als auch "GetWindowsDirectory" zur Verfügung - ich kann mir vorstellen, entweder hilfreich zu sein. – enhzflep

Antwort

2

Es gibt eine Umgebungsvariable windir. Auf meinem Computer enthält "C: \ Windows". Sie können diese Variable unter os.getenv('WINDIR') lesen (siehe python 2:os.getenv() oder python 3:os.getenv()).

+0

Wichtig zu beachten, dass Windows nicht in einem Verzeichnis namens "Windows" installiert werden muss. Ihre Lösung ist die einzig zuverlässige Methode. Als Randnotiz: Auf Python 3.5 können Sie auch 'os.environ ['windir']' verwenden. – theB

+0

'os.environ' ist nicht auf Python 3.5 beschränkt. Es existiert auch in Python 2.7 ([python 2.7: os.envirion]) (https://docs.python.org/2/library/os.html#os.environ)) – Humbalan

+0

Da das Ziel ist, die ** Laufwerksbuchstabe **, auf dem Windows installiert ist, sollten Sie anstelle von 'windir' die Umgebungsvariable' systemdrive' verwenden. –