我正在尝试弄清楚如何重定向从使用F2PY生成的Python接口运行的一些FORTRAN代码的输出。我尝试了:
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的信息在线上似乎很难找到(我认为它已经多年没有更新了;例如,“ttysnoop”的Google搜索结果中第一个链接只有指向tarballs、RPM和.deb的死链接),而这个要求在OS X上进行移植的请求得到的回复是“没戏,它需要一些我无法创建的Linux特定的utmp函数”。
我欢迎任何有关如何重定向输出的建议(不必使用ttysnoop)。
谢谢!