Seite 1 von 1
cmd Befehl aus Python starten.
Verfasst: Freitag 12. Oktober 2012, 10:16
von anymagical
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
Re: cmd Befehl aus Python starten.
Verfasst: Freitag 12. Oktober 2012, 10:22
von 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?
Re: cmd Befehl aus Python starten.
Verfasst: Freitag 12. Oktober 2012, 10:27
von anymagical
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
Re: cmd Befehl aus Python starten.
Verfasst: Freitag 12. Oktober 2012, 15:23
von jens
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
