Я пытаюсь выяснить, как перенаправить вывод из некоторого кода 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" имеет только мертвые ссылки на tarballs, RPM и .deb), и этот запрос для порта в OS X получил ответ "Не повезло, для этого требуются некоторые специфичные для Linux функции utmp, которые я не могу создать".
Я открыт для любых предложений о том, как перенаправить вывод (ему не нужно использовать ttysnoop).
Спасибо!