cmd Befehl aus Python starten.

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
anymagical
User
Beiträge: 33
Registriert: Montag 2. April 2012, 15:34

Guten Morgen,

folgenden Befehl kann ich problemlos in der Commandline ausführen. Er startet Wordpad mit der Datei "Tabelle"

Code: Alles auswählen

"%ProgramFiles%\Windows NT\Accessories\wordpad.exe" Tabelle
Wie bekomme ich es hin das dies aus einem Pythonscript geschieht?

Mit subprocess.call oder os.system habe ich es bisher nicht hinbekommen.

Grüße
Anymagical
BlackJack

@anymagical: Mit `os.system()` und `subprocess.Popen()` mit ``shell=True`` sollte es aber gehen.

Schreibst Du diese Zeichenkette selbst, oder bekommst Du die irgend wo her als Daten? Muss es zwingend diese Zeichenkette sein? Oder willst Du einfach nur etwas mit Wordpad öffnen?
anymagical
User
Beiträge: 33
Registriert: Montag 2. April 2012, 15:34

Code: Alles auswählen

subprocess.call(["%ProgramFiles%\Windows NT\Accessories\wordpad.exe"], shell=True)
0
funktioniert in der Tat, aber es muss mit der Datei Tabelle geöffnet werden und da gibt es Probleme.

Code: Alles auswählen

subprocess.call(["%ProgramFiles%\Windows NT\Accessories\wordpad.exe Tabelle"], shell=True)
1

Code: Alles auswählen

subprocess.Popen(["%ProgramFiles%\Windows NT\Accessories\wordpad.exe c:\\Users\\administrator\\Tabelle"], shell=True)
<subprocess.Popen object at 0x029D3610>
Diese Zeichenkette habe ich selbst eingegeben. Ein anderen Befehl um Wordpad zu starten kenne ich nicht.
Es kann natürlich um die Datei: Tabelle zu öffnen auch anderst gehen, hauptsache sie öffnet sich aus der shell heraus.

\\\
Okay habe es jetzt subprocess.Popen nimmt die zu öffnende Datei als 2 Argument entgegen.

Code: Alles auswählen

subprocess.Popen(["%ProgramFiles%\Windows NT\Accessories\wordpad.exe", "c:\\Users\\administrator\\Tabelle"], shell=True)
Funktioniert.

Vielen Dank!

Gruß
Anymagical
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Du könntest IMHO besser %ProgramFiles% aus os.environ auslesen, den Pfad mit os.path.join() zusammensetzten und dann auf shell=True verzichten.

Alternative: In os.environ["PATH"] nach wordpad.exe suchen...

shell=True öffnet halt die Türe für "shell injection", siehe auch: http://docs.python.org/library/subproce ... -arguments

EDIT: Vergiss die PATH Geschichte, da ist wordpad.exe anscheinend nicht drin ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten