Seite 1 von 1

subprocess und Win-Variablen

Verfasst: Mittwoch 19. April 2006, 08:31
von HarryH
Hallo,

Warum kann subprocess keine Windows-Variablen wie z.B. %WINDIR% verarbeiten?
Oder mache ich etwas falsch?
z.B. funktioniert folgender Code nicht:

Code: Alles auswählen

subprocess.Popen("%WINDIR%\notepad.exe")
Ich hoffe auf Antworten. Danke!

Re: subprocess und Win-Variablen

Verfasst: Mittwoch 19. April 2006, 08:52
von Leonidas
HarryH hat geschrieben:Warum kann subprocess keine Windows-Variablen wie z.B. %WINDIR% verarbeiten?
Weil subprocess keine Shell ist und daher Umgebungsvariablen nicht selbstständig auflöst?
HarryH hat geschrieben:Oder mache ich etwas falsch?
z.B. funktioniert folgender Code nicht:

Code: Alles auswählen

subprocess.Popen("%WINDIR%\notepad.exe")
Davon Abgesehen, dass du esl als Raw-String maskieren müsstest, also r"%WINDIR%\notepad.exe", da sonst das \n als Zeilenumbruch interpretiert wird, löst subprocess in der Standardeinstellung Variablen nicht auf.
Aber das Lösst sich alles lösen:

Code: Alles auswählen

import os, subprocess
# %WINDIR% ausgeben
print os.environ['WINDIR']
# oder direkt starten
subprocess.Popen('notepad.exe')
# oder Shell dazuwischenschalten um Variablen aufzulösen
subprocess.Popen(r'%WINDIR%\notepad.exe', shell=True)

re:

Verfasst: Mittwoch 19. April 2006, 09:18
von HarryH
Hi Leonidas,

Vielen Dank für die schnell Antwort. Meine Frage hat sich damit geklärt.
Ist mir ein wenig peinlich, das ich die Raw-String-Maskierung vergaß. :oops:

Ich bin immer wieder von der Schnelligkeit der Reaktionen in diesem Forum begeistert! :D