当前位置:  开发笔记 > 编程语言 > 正文

抑制模块外部库调用的输出

如何解决《抑制模块外部库调用的输出》经验,为你挑选了1个好方法。

使用机器学习库PyML时,我遇到了一个恼人的问题.PyML使用libsvm来训练SVM分类器.问题是libsvm将一些文本输出到标准输出.但因为那是在Python之外我不能拦截它.我尝试使用问题中描述的方法在Python中静默函数的标准输出,而不会破坏sys.stdout并恢复每个函数调用,但这些都没有帮助.

有什么方法可以做到这一点.修改PyML不是一种选择.



1> Ignacio Vazq..:

打开/dev/null写入,用于os.dup()复制标准输出,并用于os.dup2()将打开复制/dev/null到标准输出.使用os.dup2()您复制标准输出复制回后,真正的标准输出.

devnull = open('/dev/null', 'w')
oldstdout_fno = os.dup(sys.stdout.fileno())
os.dup2(devnull.fileno(), 1)
makesomenoise()
os.dup2(oldstdout_fno, 1)


想通了,sys.stdout.fileno()和devnull.fileno()是必需的,之后就可以了,谢谢!
推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有