Учитывая этот код:Как обращаться с консолью выхода и уничтожение объекта
from time import sleep
class TemporaryFileCreator(object):
def __init__(self):
print 'create temporary file'
# create_temp_file('temp.txt')
def watch(self):
try:
print 'watching tempoary file'
while True:
# add_a_line_in_temp_file('temp.txt', 'new line')
sleep(4)
except (KeyboardInterrupt, SystemExit), e:
print 'deleting the temporary file..'
# delete_temporary_file('temp.txt')
sleep(3)
print str(e)
t = TemporaryFileCreator()
t.watch()
во время t.watch()
, я хочу, чтобы закрыть это приложение в консоли ..
Я попытался с помощью CTRL+C
и она работает:
Однако, если я нажимаю кнопку выхода:
он не работает .. Я проверил много взаимосвязанных вопросов об этом, но мне кажется, что я не могу найти правильный ответ ..
Что я хочу сделать:
Консоль можно выйти в то время как программа все еще работает .., чтобы справиться с этим, когда нажата кнопка выхода, я хочу очистить объекты (удаление временных файлов), откат временных изменений и т. д.
Вопрос :
- Как я могу управлять выходом консоли?
- как его интегрировать на объектных деструкторах (
__exit__()
) - Возможно ли это? (Как насчет py2exe?)
Примечание: код будет составлен на py2exe .. «надеется, что эффект такой же»
umm, что? Когда вы нажмете X, приложение не будет уничтожено операционной системой? – gsamaras
@gsamaras, да, однако я хочу сделать некоторую очистку объектов после нажатия кнопки x .. вот почему .. Я добавлю это в свой вопрос .. – catzilla
, когда вы нажмете кнопку X, вы убиваете родительский процесс вашего питона процесс ... когда вы нажимаете CTRL + C, вы прерываете свой процесс python, и он входит в блок обработки исключений ... что я имею в виду, нажатие кнопки X не приводит вашу программу к блоку обработки исключений, и мой вопрос в том, что делать u хотеть сделать ? –