Seite 1 von 1

Executable mit Argument öffnen...

Verfasst: Montag 5. Januar 2009, 14:14
von DjFresH
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 ...

Verfasst: Montag 5. Januar 2009, 14:22
von DjFresH
ach mist war ja ganz einfach:

Code: Alles auswählen

os.popen("test.exe script.py")

Verfasst: Montag 5. Januar 2009, 14:37
von cofi
Benutz subprucess.Popen und übergebe die Argumente als Liste.

Code: Alles auswählen

subprocess.Popen(["test.exe", "script.py"])

Verfasst: Montag 5. Januar 2009, 14:46
von DjFresH
ja subprocess is besser...

Verfasst: Donnerstag 22. Januar 2009, 15:56
von Matil
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?

Verfasst: Donnerstag 22. Januar 2009, 16:00
von cofi
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"])

Verfasst: Donnerstag 22. Januar 2009, 16:20
von Matil
cool...danke^^

Verfasst: Donnerstag 22. Januar 2009, 16:56
von 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"

Verfasst: Donnerstag 22. Januar 2009, 18:50
von Hyperion
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 ...

Verfasst: Dienstag 27. Januar 2009, 09:56
von DjFresH
...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...

Verfasst: Dienstag 27. Januar 2009, 10:01
von Hyperion
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?

Verfasst: Donnerstag 29. Januar 2009, 13:22
von Matil
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.