python script in Programm in cmd ö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.
Benutzeravatar
Spaten
User
Beiträge: 52
Registriert: Samstag 27. Mai 2006, 11:35
Wohnort: Bremen
Kontaktdaten:

Samstag 27. Mai 2006, 11:43

Hallo erstmal! :D

Ich hab da mal eine Frage...

...wie kann ich in einem (GUI) Python-Script ein anderes (nicht GUI) Python Script ausführen?
Ich habe exec() gefunden, allerdings funktioniert das nur mit GUI - Anwendungen,
da wenn man print benutzt nirgendwo hingeprintet werden kann... :?
ich möchte also erst die Konsole (cmd) öffnen und dann über exec das Programm ausführen.
Wie mache ich das am besten?

Code: Alles auswählen

def onPyw(self, event):
        prog = self.control.GetValue()
        # hier am besten cmd öffnen
        exec(prog)
Python-Version: 2.5
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Samstag 27. Mai 2006, 11:58

man kann am anfang eine while schleife einbaun, die am ende des programmes beendet wird.
Dann kann man per doppelklick auf das Programm, es in cmd öffnen, es dürfen aber keine sonderzeichen/fehler in dem programm vorhanden sein!
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Samstag 27. Mai 2006, 12:05

Hallo,
Spaten hat geschrieben: Wie mache ich das am besten?

Code: Alles auswählen

def onPyw(self, event):
        prog = self.control.GetValue()
        # hier am besten cmd öffnen
        exec(prog)
Die cmd Konsole öffnest du so:

Code: Alles auswählen

import os
os.startfile('cmd.exee')
Wenn ich dich richtig verstanden hab willst du ein Programm(nicht GUI) über cmd öffnen. Das machst du so:

Code: Alles auswählen

import os
os.system('cd.. & cd.. & cd.. & cd.. & cd.. & cd Pfad & programm.exe')
Diese Variante ist aber nicht sehr schön. Du kannst auch folgendes machen:

Code: Alles auswählen

import os
os.startfile('Pfad\\programm.exe')
Wenn die exe keine GUI besitzt wird sie dann mit cmd geöffnet.

Gruß Thomas
mfg

Thomas :-)
Benutzeravatar
Spaten
User
Beiträge: 52
Registriert: Samstag 27. Mai 2006, 11:35
Wohnort: Bremen
Kontaktdaten:

Samstag 27. Mai 2006, 13:12

oh cool dankeschön ich werd es ausprobieren :D
Python-Version: 2.5
Benutzeravatar
Spaten
User
Beiträge: 52
Registriert: Samstag 27. Mai 2006, 11:35
Wohnort: Bremen
Kontaktdaten:

Samstag 27. Mai 2006, 13:36

Es funktionert mit

Code: Alles auswählen

os.startfile(self.dirname+"\\"+self.filename)
allerdings wird das Fenster nach Ablauf des Programms gleich wieder geschlossen... so kann man ein ergebnis, welches mit print ausgegeben wirde nicht mehr sehen, bzw. eventuelle Fehlermeldungen nicht lesen

ich möchte ja damit eine python-Datei Ausführen, allerdings ohne, dass sich das cmd-Fenster gleich wieder schließt.

Hat da jemand ne idee?
Python-Version: 2.5
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Samstag 27. Mai 2006, 14:46

Ja wie gesagt muss das ganze Programm, die Zuweisungen nicht unbedingt, innerhalb einer whilw schleife stellen!
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Samstag 27. Mai 2006, 15:43

Spaten hat geschrieben:ich möchte ja damit eine python-Datei Ausführen, allerdings ohne, dass sich das cmd-Fenster gleich wieder schließt.

Hat da jemand ne idee?
Ja klar da gibt es mehrere Möglichkeiten z.b. :

Code: Alles auswählen

import time
time.sleep(10)
Somit bleibt das Fenster 10 Sekunden geöffnet und schließt sich dann

oder du machst:

Code: Alles auswählen

x=raw_input('Zum beenden des Programms drücken sie bitte die Enter-Taste')
mfg

Thomas :-)
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Samstag 27. Mai 2006, 18:14

Es reicht auch einfach nur raw_input(), also ohne "x=" :wink:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Samstag 27. Mai 2006, 19:20

jens hat geschrieben:Es reicht auch einfach nur raw_input(), also ohne "x=" :wink:
Ja ich weiß, aber ich bin es halt gewohnt raw_input() in einer Variablen zu speichern, da ich meistens dann die Variable weiterverwende, z.b. mit einer if abfrage. :wink:
mfg

Thomas :-)
Benutzeravatar
Spaten
User
Beiträge: 52
Registriert: Samstag 27. Mai 2006, 11:35
Wohnort: Bremen
Kontaktdaten:

Sonntag 28. Mai 2006, 08:35

auf die Idee bin ich auch schon gekommen, aber wenn das Programm einen Fehler enthält, wird dieser zwar angezeigt aber das Fenster schließt sich so schnell, dass man die Meldung nicht mehr lesen kann....
Python-Version: 2.5
Roman
User
Beiträge: 65
Registriert: Dienstag 14. März 2006, 09:10
Wohnort: Berlin

Sonntag 28. Mai 2006, 09:49

Hallo Spaten,
Warum kannst du nicht einfach dein Prgramm vorher auf Fehler überprüfen?
Oder wird erst im Verlauf des Hauptprogramms entschieden, welches Programm ausgeführt werden soll?
Ansonsten fällt mir da auch nichts ein, wie man das Beenden verhindern soll...
Man könnte höchstens stderr manipulieren, so dass die Fehlermeldungen in eine Datei geschrieben werden.
Aber da weiss ich leider nicht genau, wie es geht. :oops:

MfG,
Roman
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Sonntag 28. Mai 2006, 11:15

Spaten hat geschrieben:auf die Idee bin ich auch schon gekommen, aber wenn das Programm einen Fehler enthält, wird dieser zwar angezeigt aber das Fenster schließt sich so schnell, dass man die Meldung nicht mehr lesen kann....
Wenn du raw_input bentutzt schließt sich das Fenster nicht.
mfg

Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Sonntag 28. Mai 2006, 11:50

natürlcih wird es geschlossen, solange dort ein fehler ist; das folgt immer zu einem abbruch des programmes, ob da nun raw_input() steht oder nicht!
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Sonntag 28. Mai 2006, 12:02

Dann fängt er halt den Fehler mit try-except ab! :lol:
mfg

Thomas :-)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 28. Mai 2006, 12:51

Dann nutzt doch einfach die Shell, wie im [wiki]FAQ#WieStarteIchSkripte[/wiki] beschrieben. Dann braucht man kein störendes raw_input(), keine Probleme mit Editor-Bugs (siehe IDLE) und die Exceptions sieht man auch.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten