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

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

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

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:

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:

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

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

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

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

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:

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

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

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:

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

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

Thomas :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

naja wie bereits erwähnt, kommt die console net mit sonderzeichen, wie ä, ö, ß , etc, aus, und wenn eine Variable mit einem Sonderzeichen "versehen" ist, schließt sich die Shell meines Wissen auch!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Warum sollte sie sich schließen, wenn du sie aufgemacht hast? Meine Shell zeigt einfach nur Zeichensalat an, wenn sie mit Umlauten nicht klarkommt Mehr nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Spaten
User
Beiträge: 52
Registriert: Samstag 27. Mai 2006, 11:35
Wohnort: Bremen
Kontaktdaten:

Das Ding ist, dass ich einen Editor für Py-Dateien schreiben will, der es ermöglicht,
Die Dateien in der Konsole auszuführen...
und beim Ausführen von geschriebenen Scripten sollen Fehlermeldungen angezeigt werden...

Ich weiß, dass es theoretisch gehen muss, ich habe einen anderen Editor, der genau das macht... ich weiß aber leider nicht wie....
Python-Version: 2.5
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Eine dumme Lösung: Schreib ein Skript "A" drum herrum, welches du von deinem Editor startest. Das Skript "A" hat ein raw_input() am Ende und startet das eigentliche Skript "B"...

Das Script "A" kann ein Python Skript mit subprocess sein oder einfach nur eine BatchDatei unter Windows oder ein sh-Skript unter Linux.

Theroretisch muß Script "A" nicht unbedingt eine seperate Datei sein, sondern dein Editor selber. Dazu kannst du einfach startparameter definieren, die deinem Editor sagt, das es jetzt nicht das Editorfenster aufmachen soll, sondern das angegebene Skript starten soll :lol:

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