Executable mit Argument öffnen...

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
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

Es gibt ja die Möglichkeit z.B. eine Desktopverknüpfung
von einem Programm zu erstellen und unter Eigenschaften bei "Ziel"
noch ein zusätzliches Argument oder Parameter zu übergeben.

z.b. "C:\Program Files\Test\test.exe"script.py

...bedeutet dass das script in dem programm gestartet wird...

...nun habe ich mehrere scripte die ich mit diesem programm öffnen
will...

mit welcher lib oder befehl kann ich ein argument übergeben?

programm öffnen kann man ja entweder mit:

os.popen oder
subprocess.Popen ...
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

ach mist war ja ganz einfach:

Code: Alles auswählen

os.popen("test.exe script.py")
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Benutz subprucess.Popen und übergebe die Argumente als Liste.

Code: Alles auswählen

subprocess.Popen(["test.exe", "script.py"])
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

ja subprocess is besser...
Matil
User
Beiträge: 5
Registriert: Donnerstag 22. Januar 2009, 15:39

Hi...ich schreib mein Problem mal hier rein weil es dazu passt.
Ich habe ähnlich wie oben beschrieben ein skript gestartet.

Code: Alles auswählen

subprocess.Popen(["C:\python\python.exe", "D:\createObject_OE.py"])
Jetzt habe ich nur das Problem das ich dem python skript noch argumente mitgeben muss, damit es läuft.
Ein argument kann z.B. so aussehen

Code: Alles auswählen

classname=Beispielklassenname
kan mir irgendwer sagen wie ich das schreiben muss, damit ich das so übergeben kann?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Genau so, wie du auch den Pfad zum Modul angibst: Als String, angehängt an subprocess.Popen.

Code: Alles auswählen

subprocess.Popen(["C:\python\python.exe", "D:\createObject_OE.py", "classname=Beispielklassenname"])
Matil
User
Beiträge: 5
Registriert: Donnerstag 22. Januar 2009, 15:39

cool...danke^^
lunar

Bei Backslashes solltest du Raw-Strings verwenden. Bestimmte Kombinationen von Backslashes und Zeichen stehen für Escapesequenzen. So steht '\n' nicht für \n, sondern für einen Zeilenumbruch. Folgendes wäre also mit aller Wahrscheinlichkeit ein ungültiger Dateiname:
"C:\Programme\netbeans"
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wobei man ein Python-Programm ja evtl. besser direkt in sein eigenes Script integriert, oder? Ich meine ein "Umweg" über Subprocess ist doch vermutlich nur in Ausnahmesituationen geeigneter ...
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

...kommt wohl darauf an für was man es benutzt,
ich hab das für eine testreihe gebraucht um die funktionalität
meines programms zu testen...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

DjFresH hat geschrieben:...kommt wohl darauf an für was man es benutzt,
ich hab das für eine testreihe gebraucht um die funktionalität
meines programms zu testen...
Also wenn das Programm sogar von Dir selber stammt, sehe ich ja nach der kurzen Beschreibung noch weniger Grund das so zu machen! Mal ganz davon abgesehen, dass es spezielle Testmodule für Python gibt, kann man sich doch extrem simpel eine kleine Funktion schreiben, die das Modul importiert und entsprechend "nutzt".

Oder ging es Dir "nur" um den Kommandozeilenparameter?
Matil
User
Beiträge: 5
Registriert: Donnerstag 22. Januar 2009, 15:39

Es ging darum das ich ein gui gemacht habe und je nachdem welcher knopf betätigt wird soll das "createObject" script mit anderen parametern laufen.
Antworten