перенаправление ошибки интеграции в файл, python

Я использую odeint из scipy.itegrate в python. Иногда я получаю ошибки интеграции, например,

lsoda-- при текущем t (=r1), mxstep (=i1) шагов
, предпринятых для этого вызова до достижения tout
в сообщении выше, i1 = 500 в сообщении выше, r1 = 0,4082154636630D-03

Я хотел бы НЕ печатать эти ошибки на экране. Есть ли способ распечатать их прямо в какой-нибудь файл ошибок? Я просто не хочу, чтобы они печатались на экране, так как я печатаю что-то еще там в большом цикле и автоматически в файл результата. Спасибо


person Kasia Kowalska    schedule 15.03.2018    source источник
comment
Возможный дубликат Как перенаправить stderr в Python?   -  person atru    schedule 15.03.2018
comment
Здесь я нашел идеальное решение: [отвеченный вопрос][1] stackoverflow.com/questions/31681946/   -  person Kasia Kowalska    schedule 15.03.2018


Ответы (1)


Если эти сообщения печатаются на stderr, вы можете захватить их и перенаправить в файл. Минимальная реализация

import sys
sys.stderr = open('the_log_file_for_errors', 'w')

Другой, более сложный способ может состоять в том, чтобы инкапсулировать код, который может выдать ошибку, в блоке try...except, в блоке исключений вы можете зарегистрировать ошибку в файле с некоторыми дополнительными деталями (такими как входные параметры и т. д.), чтобы проверить после .

person Gianluca    schedule 15.03.2018