Считается ли хорошей практикой ловить KeyboardInterrupt в коде Python?

Недавно я работал над проектом, который требует от меня записи данных в файлы и из файлов, и я не хочу беспокоиться о повреждении файлов, если скрипт будет остановлен с помощью Ctrl+ С.

Теперь этому можно помочь, убедившись, что файлы открываются как можно реже, но всегда есть вероятность того, что во время критической записи произойдет случайный сигнал SIGINT.

Итак, я изучил перехват исключения (поскольку нажатие Ctrl+C приводит к исключению KeyboardInterrupt) и наткнулся на два вопроса (Захват прерывания клавиатуры в Python без try-except и Перехват прерывания клавиатуры в Python во время завершения работы программы), в котором были способы сделать это, а также файл сообщение effbot.

Очевидно, это может вызвать проблемы, если перехватывающий код застрянет, потому что вы остаетесь без этого метода остановки выполнения программы.

Однако мне было любопытно, будет ли это считаться хорошей практикой программирования?


person RPiAwesomeness    schedule 11.06.2015    source источник
comment
Вы можете поймать его, очистить, а затем снова поднять.   -  person wwii    schedule 11.06.2015
comment
@wwii Это мысль, интересный взгляд на это.   -  person RPiAwesomeness    schedule 11.06.2015
comment
Я бы посчитал это плохой практикой, потому что это предотвращает повреждение вашего файла только одним из многих способов. Если что-то еще приводит к внезапному отключению вашего сервера (отключение питания), у вас все равно будет та же проблема. Я рекомендую сделать запись файла атомарной с помощью временного файла. См. этот пост: stackoverflow.com/questions/ 2333872/   -  person abaldwin99    schedule 12.06.2015