好的..所以可能一个例子是解释这个问题的好方法
所以我有这样的事情:
if __name__=="__main__"
result = foobar()
sys.stdout.write(str(result))
sys.stdout.flush()
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
现在这个脚本是从ruby脚本调用的..基本上它在那里解析结果.但是foobar()有很多打印声明..而且stdout也刷新了所有这些打印件.有没有办法(除了记录mathods)我可以在这里修改一些自动抑制那些打印的东西,只是刷新这个结果?谢谢
g.d*_*d.c 18
您想暂时隐藏(或隐藏)stdout.像这样的东西:
actualstdout = sys.stdout
sys.stdout = StringIO()
result = foobar()
sys.stdout = actualstdout
sys.stdout.write(str(result))
sys.stdout.flush()
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
您需要为sys.stdout分配类似文件的内容,以便其他方法可以有效地使用它. StringIO是一个很好的候选者,因为它不需要磁盘访问(它只会在内存中收集),然后被丢弃.
使用Python 3.4及更高版本,您可以使用redirect_stdout contextmanager,如下所示:
with redirect_stdout(open(os.devnull, "w")):
print("This text goes nowhere")
print("This text gets printed normally")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7700 次 |
| 最近记录: |