subprocess und Win-Variablen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Mittwoch 19. April 2006, 08:31

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!
Gruß, Harry
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 19. April 2006, 08:52

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)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Mittwoch 19. April 2006, 09:18

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
Gruß, Harry
Antworten