【发布时间】:2009-06-10 19:59:15
【问题描述】:
我试图弄清楚如何重定向一些 FORTRAN 代码的输出,我已经使用 F2PY 为其生成了 Python 接口。我试过了:
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 中重定向输出的事实上的方法,但在这种情况下它似乎不起作用(即,输出仍然显示)。
我确实发现 a mailing list post from 2002 说“可以从 pts 设备读取消息,例如 ttysnoop 会这样做”。关于 ttysnoop 的信息似乎很难在网上找到(我认为它已经有好几年没有更新了;例如,the first result on Google for "ttysnoop" 只包含指向 tarball、RPM 和 .deb 的死链接)和this request for a port to OS X收到响应“不走运,它需要一些我无法创建的特定于 linux 的 utmp 函数。”
我愿意接受有关如何重定向输出的任何建议(不必使用 ttysnoop)。
谢谢!
【问题讨论】:
-
您确定 fortran 输出不会进入 stderr 而不是 stdout?
-
是的,我也尝试过重定向它,得到了相同的结果。
标签: python unix fortran stdout