Seite 1 von 1
Programm Ende bzw. Abbruch Befehl
Verfasst: Freitag 7. Juli 2006, 13:49
von Neo
Hallo zusammen,
kurze Frage zu ner Syntax.
Ich suche bzw. brauche einen Programmabbruch command um eine laufende Sitzung (script) zu schließen. Z.B. bei einer If-Bedingung.
In der Art wie der :EOF im DOS.
Bsp:
Code: Alles auswählen
.....
deff Test(n):
if n == 2000:
print 'blablabla'
else:
[b]PROGRAMMABBRUCH[/b]
.....
Thx
Neo
Verfasst: Freitag 7. Juli 2006, 13:53
von Rebecca
1.) Code in Python-Tags setzen
2.)
Verfasst: Freitag 7. Juli 2006, 13:56
von Neo
Danke
Verfasst: Freitag 7. Juli 2006, 17:10
von murph
wenn du spaß an der freude hast, kannst du auch einen error raisen.
(
Code: Alles auswählen
else:
raise SystemError, "this is to exit this programm"
)
//edit:
natürlich habe ich mich verschrieben^^
ich meine natürlich
^^
Verfasst: Freitag 7. Juli 2006, 17:28
von gerold
Hi murph!
<flüster>raise SystemExit()</flüster>
lg
Gerold
Verfasst: Freitag 7. Juli 2006, 17:43
von SigMA
generell sollte man aber immer versuchen das Programm so auslaufen zu lassen, dass kein sys.exit() benötigt wird!
SigMA
Verfasst: Freitag 7. Juli 2006, 18:09
von murph
außerdem halte ich es für etwas sc****e, nur, um ein Programm zu beenden, sys zu importieren, wie ich es schon oft gesehen habe.
deshalb raise ich lieber irgendwas, außer sys ist sowieso schon 'drin'.
Verfasst: Freitag 7. Juli 2006, 18:36
von gerold
murph hat geschrieben:nur um ein Programm zu beenden, sys zu importieren
Hi murph!
sys ist immer da. Es ist direkt ins Python eingebaut. Es ist nur nicht im Namensraum. Bei ``import sys`` muss Python nicht extra auf die Festplatte zugreifen.
Code: Alles auswählen
>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> import shutil
>>> shutil
<module 'shutil' from 'C:\Python24\lib\shutil.pyc'>
>>> sys.builtin_module_names
('__builtin__', '__main__', '_bisect', '_codecs', '_codecs_cn',
'_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr',
'_codecs_tw', '_csv', '_heapq', '_hotshot', '_locale', '_multibytecodec',
'_random', '_sre', '_subprocess', '_symtable', '_weakref', '_winreg',
'array', 'audioop', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'collections',
'datetime', 'errno', 'exceptions', 'gc', 'imageop', 'imp', 'itertools',
'marshal', 'math', 'md5', 'mmap', 'msvcrt', 'nt', 'operator', 'parser',
'regex', 'rgbimg', 'sha', 'signal', 'strop', 'struct', 'sys', 'thread', 'time',
'xxsubtype', 'zipimport')
>>>
Fazit: sys importieren hat keinerlei Nachteile.
lg
Gerold
Verfasst: Freitag 7. Juli 2006, 18:44
von murph
oh, python ist immer wieder für eine überraschung gut!
aber trotzdem mag ich lieber raise SystemExit.
Oder hat das irgendwelche nachteile?
Verfasst: Freitag 7. Juli 2006, 19:24
von gerold
murph hat geschrieben:Oder hat das irgendwelche nachteile?
Hi murph!
Ich glaube nicht.
lg
Gerold
Verfasst: Freitag 7. Juli 2006, 20:13
von newone_XXV.
Ähm und wo ist dann da der Unterschied zwischen dem Beiden?
Verfasst: Freitag 7. Juli 2006, 20:24
von murph
anscheinend kannst du beides benutzen,
ohne für dich einen unterschied zu bemerken
Verfasst: Samstag 8. Juli 2006, 16:46
von Leonidas
newone_XXV. hat geschrieben:Ähm und wo ist dann da der Unterschied zwischen dem Beiden?
sys.exit kann einen Rückgabewert ausgeben (nebenbei kann man es mit einem try-except-SystemExit-Konstrukt abfangen). Daneben gibt es noch sys._exit, dass keine mit atexit-registrierten Exit-Handler ausführt.