Я пытаюсь выяснить, как перенаправить вывод из некоторого кода FORTRAN, для которого я сгенерировал интерфейс Python, используя F2PY. Я пробовал:
from fortran_code import fortran_function
stdout_holder = sys.stdout
stderr_holder = sys.stderr
sys.stdout = file("/dev/null","w")
fortran_function()
sys.stdout.close()
sys.stderr.close()
sys.stdout = stdout_holder
sys.stderr = stderr_holder
Это де-факто метод перенаправления вывода в Python, но в этом случае он, похоже, не работает (т.е. вывод отображается в любом случае).
Я нашел сообщение в списке рассылки от 2002 , в котором говорится, что «Можно читать сообщения с устройств pts, например, это делает ttysnoop». Похоже, что информацию о ttysnoop довольно сложно найти в Интернете (я не думаю, что она была обновлена в течение нескольких лет; например, первый результат в Google для "ttysnoop" содержит только мертвые ссылки на тарболы , RPM и .deb), и этот запрос на порт для OS X получил ответ: «Не повезло, ему требуются некоторые специфичные для Linux функции utmp, которые я не могу создать».
Я открыт для любых предложений о том, как перенаправить вывод (для этого не нужно использовать ttysnoop).
Спасибо!