Запись ошибок Python

Я хотел бы найти способ регистрировать каждую ошибку, из-за которой интерпретатор python перестает быть сохраненным в файле, а также печатается на экране. Причина, по которой я хотел бы сделать это, – это то, что я хочу сохранять статистику по типам ошибок, которые я делаю при написании кода, с целью найти способы избежать ошибок, которые я часто делаю в будущем.

Я пытаюсь сделать это, написав оболочку для интерпретатора python, используя модуль подпроцесса. В принципе, он запускает интерпретатор python, захватывает любой вывод, анализирует и сохраняет его в файл, печатает вывод и использует matplotlib для создания некоторых итоговых показателей. Тем не менее, у меня возникла проблема с получением вывода из моего сценария оболочки в режиме реального времени. Например, если скрипт, который я запускаю, является:

import os import time for x in range(10): print "testing" time.sleep(10) 

и я использую subprocess.Popen () с p.communicate (), оболочка будет ждать 100 секунд, а затем распечатать весь вывод. Я бы хотел, чтобы обертка была как можно более невидимой – в идеале в этом случае она будет печатать «тестирование» каждые 10 секунд.

Если бы кто-то мог указать мне на хороший способ сделать это, я был бы очень признателен.

Благодаря!

Я считаю, что вы можете просто заменить sys.excepthook своей собственной функцией. Вы можете прочитать об этом в документации Python .

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

 import sys def my_excepthook(type, value, tb): # you can log the exception to a file here print 'In My Exception Handler' # the following line does the default (prints it to err) sys.__excepthook__(type, value, tb) sys.excepthook = my_excepthook 

Возможно, вам также захочется посмотреть на модуль трассировки , чтобы форматировать трассировку, которую вы получаете.