我正试图找出如何重定向一些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"只有tarballs、RPMs和.deb的死链接),并且this request for a port to OS X收到了“不走运,它需要一些特定于linux的utmp函数,我无法创建这些函数”的响应
对于如何重定向输出,我愿意接受任何建议(它不必使用ttysnoop)。
谢谢!
这是我最近写的一个context manager,发现它很有用,因为我在处理pymssql时遇到了类似的问题。我也使用了文件描述符方法,但是我使用了context manager。我想到的是:
我创建这个的上下文在this blog post。我想和你的差不多。
我在一个
setup.py
中这样使用它:stdin和stdout fds正由C共享库继承。
相关问题 更多 >
编程相关推荐