[OK]を私は最高の私をスイートの答えが見つかりました:推奨ソリューションのatexit用として
import sys
try:
print "any code: allocate files, usb gadets etc "
try:
sys.exit(-1) # some severe error occure
except Exception as e:
print "sys.exit is not catched:"+str(e)
finally:
print "but all sub finallies are done"
print "shall not be executed when sys.exit called before"
finally:
print "Here we can properly free all resources in our preferable order"
print "(ie close log file at the end after closing all gadgets)"
を - それは素晴らしく、すべてのだろうが、それは私のpython 2.6では動作しません。それは間違いなく、ほとんどの空想だ - - ラッパー液として
import sys
import atexit
def myFinal():
print "it doesn't print anything in my python 2.6 :("
atexit.register(myFinal)
print "any code"
sys.exit(-1) # is it pluged in?
print "any code - shall not be execute"
正直なところ、私はそれが良いでしょうか言うことができない...
import sys
class mainCleanupWrapper(object):
def __enter__(self):
print "preallocate resources optionally"
def __exit__(self, type, value, traceback):
print "I release all resources in my order"
with mainCleanupWrapper() as whatsThisNameFor:
print "ok my unchaged code with any resources locking"
sys.exit(-1)
print "this code shall not be executed"
を、私は私の解決策を見つけた - しかし、率直に言ってPythonはいるようだ:私はこれを試してみましたかなり嵩張って肥大化しているかもしれません...
'atexit'を見ましたか? http://docs.python.org/library/atexit –