cmd fenster nach py2exe offen lassen

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
sorgenlos
User
Beiträge: 69
Registriert: Donnerstag 15. Februar 2007, 00:52

Hallo Leute ich hab mal ne frage,

nach dem ich z.B. ein einfaches HelloWorld Programm mit py2exe in eine executable konvertiert hab und diese dann ausführe, öffnet sich das CMD-Fenster und schließt sich sofort.

Meine Frage ist, welcher Befehl nochmal das schließen unterdrückt, ich find diesen Befehl auch nicht in der Wiki und anderen Büchern.
Bastl
User
Beiträge: 9
Registriert: Montag 13. November 2006, 11:52

Bin mir nicht sicher aber bei mir funktioiert das mit

Code: Alles auswählen

a = raw_input("Zum Beenden Taste drücken")
dann müsste es eigentlich warten bis eine Taste gedrückt wird.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Die Zuweisung "a =" kannst du auch weglassen ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

sorgenlos hat geschrieben:Meine Frage ist, welcher Befehl nochmal das schließen unterdrückt, ich find diesen Befehl auch nicht in der Wiki und anderen Büchern.
Ich würde eher die Konsole aufmachen und dann das Programm ausführen. So bleibt die Konsole auch offen, falls es Tracebacks gibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Zweite Möglichkeit wäre eine Batch Datei:

Code: Alles auswählen

python.exe MeinProgramm.py
pause
;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sowohl ``raw_input()`` als auch die Nutzung einer Batch-Datei empfinde ich als eher unschöne Hacks.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Ich kann mich da nur dem Leonidas anschließen... aber ich arbeite eh nur in Konsolen, von daher weiß ich ihre Funktionalitaet auch zu schaetzen (ja natuerlich nicht unter Windoze)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
sorgenlos
User
Beiträge: 69
Registriert: Donnerstag 15. Februar 2007, 00:52

Dankeschön,

raw_input("Zum Beenden Taste drücken etc")

hat tadellos funktioniert
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

im os modul gibt es einen funktion system ... damit kanst du befehle ausfuehren, wie du sie normalerweise in eine konsole schreibst ... ergo koenntest du os.system("pause") aufrufen und es muesste auch klappen
BlackJack

Die `raw_input()`-Lösung funktioniert aber auf allen Systemen. ``pause`` gibt's nicht überall.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

cime hat geschrieben:ergo koenntest du os.system("pause") aufrufen und es muesste auch klappen
Und es kracht unter allen nicht-Windows Systemen. DIe Lösung ist sogar noch schlechter als die vorherigen.

Nicht wundern, dass ich alle Lösungen so niedermache, aber wenn man überlegt was das alles für Hässliche Hacks sind im Vergleich zum offenhalten der Konsole, dann ist das nicht sonderlich verwunderlich.

Stellen wir mal ein Ranking auf, geordnet nach Sauberkeit der Lösung:
  1. Konsole offenhalten
  2. lange, lange nichts
  3. Batch-Datei
  4. wieder längere Zeit nichts
  5. ``raw_input()``
  6. ``os.system('pause')``
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackPython
User
Beiträge: 16
Registriert: Samstag 15. Oktober 2011, 09:22

Bitte schreibt jetzt nicht "Schau aufs Datum" oder so. Ich weiss selber dass das Thema von 2007 ist.
Mir ist das Thema gerade aufgefallen und ich hätte eine eigene Lösung
Für alle dies interessiert:

Code: Alles auswählen

while True:
    pass
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

BlackPython hat geschrieben: Für alle dies interessiert:

Code: Alles auswählen

while True:
    pass
1. Schau aufs Datum. Das grenzt ja schon an Leichenflederei ;)

2. Ist das die aller aller aller aller schlimmste Lösung. Da rennt das Programm in einer Endlossschleife und verbrennt Prozessorzeit um... nichts zu tun. Außerdem ist es dann eher schwierig das Programm "normal" zu beenden, sondern mann muss es dann per KeyboardInterrupt in den hoffentlich erfolgenden Tod schicken.

Also vergiss das, das hat mit der "Lösung" des "Problems" in diesem Thread nichts zu tun.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und wenn das Programm crasht, bevor es zu der Schleife kommt, dann geht das Fenster zu ohne dass du den Fehler gesehen hast. Wo ist das bitte eine Lösung, die scheitert wenn sie benötigt wird?!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Für Schwierigkeiten unter Windows:
- Konsolenfenster mit der Maus linke Taste gedrückt in der Kopfzeile festhalten, solange das Programm läuft und bei Programmabbruch zeitgleich ALT+F4 drücken, um das normale Schliessen des Fensters zu antagonisieren (analog zu minus * minus ...), funktioniert wirklich gut, braucht allerdings Erfahrung und Routine seitens des Benutzers, um den korrekten Zeitpunkt zu treffen. Ist aber nix, was nicht mit ein bisschen Übung zu Beheben wäre ;)
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

BlackPython schon mal auf die CPU Auslastung bei deiner Lösung geschaut? :D
Noobi
User
Beiträge: 1
Registriert: Samstag 13. Oktober 2012, 16:39

Bastl hat geschrieben:Bin mir nicht sicher aber bei mir funktioiert das mit

Code: Alles auswählen

a = raw_input("Zum Beenden Taste drücken")
dann müsste es eigentlich warten bis eine Taste gedrückt wird.
Hey, ich habe das probiert aber bei mir geht es leider nicht. Also einfach am Ende des Codes noch das in eine eigene Zeile eingeben oder?
a = raw_input("Zum Beenden Taste drücken")

Oder muss man in die ("") etwas anderes reinschreiben?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Die "Lösung" mit ``raw_input`` ist eine eher schlechte Lösung, oder eher: keine sinnvolle Lösung. Einfach das Py2exe-Programm aus der Kommandozeile starten ist besser als irgendwas mit ``raw_input`` zusammenzupfuschen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten