Seite 1 von 1

"Saubere" Enter-on-quit Lösung

Verfasst: Sonntag 26. August 2007, 10:14
von Leonidas
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.

Verfasst: Montag 27. August 2007, 15:23
von mkesper
Hallo,

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.

Verfasst: Montag 27. August 2007, 20:02
von Zap
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 ;)

Verfasst: Montag 27. August 2007, 20:35
von Leonidas
mkallas hat geschrieben:Auch wenn's nach Haarspalterei aussehen sollte:
Die Bezeichnung "the MIT License" sollte man so nicht verwenden
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.

Ich habe auch überlegt: heißt es nun new BSD license oder revised BSD license?

Verfasst: Donnerstag 6. August 2009, 09:24
von pudeldestodes
Zur Ergänzung: eine einfache Mögilchkeit ist es, eine .bat-Datei der folgenden Form zu erstellen:

Code: Alles auswählen

python programm.py
@pause
Befindet sich Python nicht in der Path-Umgebungsvariable, so lässt sich auch der absolute Pfad zur .exe angeben.

Verfasst: Donnerstag 17. September 2009, 12:38
von pudeldestodes
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:

Code: Alles auswählen

C:\Python25\python.exe %*
@pause
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.

Verfasst: Donnerstag 17. September 2009, 21:35
von sma
mkallas hat geschrieben:Auch wenn's nach Haarspalterei aussehen sollte: [...]
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 ;)

Stefan

Verfasst: Donnerstag 17. September 2009, 22:45
von Leonidas
sma 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 ;)
Naja, da es die MIT-Lizenz ist, kann ich dich ja jetzt auch schlecht verklagen, wenn du den Code dreist abkupferst ;)
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.