Hallo,
Ich muss zugeben, dass ich kein großer Fan diverser Methoden zum Offenhalten des Fensters der Eingabeaufforderung unter Windows bin. Ich denke immer noch, dass dies in aller Regel undurchdacht ist, weil dann Leute die das Programm aus der Shell starten unnötigerweise Enter drücken müssen.
Jedoch gibt es auch manchmal, ganz selten Fälle bei denen das sinnvoll ist. Um diese Fälle geht es mir in diesem Snippet.
In der Regel wird einfach ``raw_input()`` genommen, was nicht optimal ist, da das Programm bei unbehandelten Exceptions gar nicht erst zu diesem Code kommt und daher schon vorher beendet wird - dadurch geht das Fenster zu und man kann den Traceback nicht sehen.
Mein Ansatz baut auf ``atexit`` auf, dass den Exit-Handler herimmt und somit auch bei Exceptions aktiv ist.
Der Code ist in Paste #2967 zu finden.
"Saubere" Enter-on-quit Lösung
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Hallo,
Auch wenn's nach Haarspalterei aussehen sollte:
Die Bezeichnung "the MIT License" sollte man so nicht verwenden:
Auch wenn's nach Haarspalterei aussehen sollte:
Die Bezeichnung "the MIT License" sollte man so nicht verwenden:
Seiten der FSF zu Lizenzen hat geschrieben: Expat License
This is a simple, permissive non-copyleft free software license, compatible with the GNU GPL. It is sometimes ambiguously referred to as the MIT License.
Das ist ja witzig, genau so eine Lösung hab ich mir vor kurzem auch überlegt. Und zwar hatte ich den Fall das ein Pythonskript das als Windowsservice laufen sollte sich immer wieder verabschieded hatte und ich nicht sehen konnte was da passiert ist
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Richtig. Original stand im Quellcode auch "MIT/X license", habs dann aber für overkill gehalten, da das fast schon länger gewesen wäre als der Quellcode In der Regel spricht man in dem Fall eben von MIT-Lizenz.mkallas hat geschrieben:Auch wenn's nach Haarspalterei aussehen sollte:
Die Bezeichnung "the MIT License" sollte man so nicht verwenden
Ich habe auch überlegt: heißt es nun new BSD license oder revised BSD license?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 65
- Registriert: Samstag 9. Juni 2007, 23:45
Zur Ergänzung: eine einfache Mögilchkeit ist es, eine .bat-Datei der folgenden Form zu erstellen:
Befindet sich Python nicht in der Path-Umgebungsvariable, so lässt sich auch der absolute Pfad zur .exe angeben.
Code: Alles auswählen
python programm.py
@pause
Zuletzt geändert von pudeldestodes am Donnerstag 17. September 2009, 12:39, insgesamt 1-mal geändert.
-
- User
- Beiträge: 65
- Registriert: Samstag 9. Juni 2007, 23:45
Da es mich mittlerweile nervt, für jedes Python-(Perl-, etc.)-Programm noch eine extra .bat-anzulegen, habe ich mir über die Windowsdateiverknüpfung für das "Rechts-Klick-Menü" eine neue Aktion definiert, die auf eine .bat mit dem folgenden Inhalt verweist:
Weitere Option: Mit "|| @pause" (führe aus, wenn vorheriger Befehl fehgeschlagen ist) würde das Fenster nur bei einer Fehlermeldung auf Eingabe warten (wie ich finde die sinnvollste Lösung).
Eingestellt wird das ganze dann unter:
Arbeitsplatz->Extras->Ordneroptionen->Dateitypen->py->Erweitert->neu->
Vorgang: irgendein fescher Name
Anwendung: obige .bat-Datei auswählen.
Bisher funktioniert das einwandfrei.
Edit: Befehl ausgebessert.
Code: Alles auswählen
C:\Python25\python.exe %*
@pause
Eingestellt wird das ganze dann unter:
Arbeitsplatz->Extras->Ordneroptionen->Dateitypen->py->Erweitert->neu->
Vorgang: irgendein fescher Name
Anwendung: obige .bat-Datei auswählen.
Bisher funktioniert das einwandfrei.
Edit: Befehl ausgebessert.
Zuletzt geändert von pudeldestodes am Freitag 15. Januar 2010, 01:16, insgesamt 2-mal geändert.
Also ohne Leonidas Leistung jetzt schmälern zu wollen, doch auch wenn er ein Copyright auf den Kommentartext hat, habe ich so meine Zweifel, dass die Erfindungshöhe von "atexit.register(raw_input, '...')" hoch genug ist, als das man sich da überhaupt über eine Lizenz streiten müsstemkallas hat geschrieben:Auch wenn's nach Haarspalterei aussehen sollte: [...]
Stefan
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Naja, da es die MIT-Lizenz ist, kann ich dich ja jetzt auch schlecht verklagen, wenn du den Code dreist abkupferstsma hat geschrieben:Also ohne Leonidas Leistung jetzt schmälern zu wollen, doch auch wenn er ein Copyright auf den Kommentartext hat, habe ich so meine Zweifel, dass die Erfindungshöhe von "atexit.register(raw_input, '...')" hoch genug ist, als das man sich da überhaupt über eine Lizenz streiten müsste
Aber ich möchte hinweisen dass der Code inzwischen über 2 Jahre alt ist und ich für mich beanspuche in der Zeit etwas, wenn auch nicht viel, Charakterentwicklung durchlaufen zu haben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice