无法在python中将共享库输出重定向到/dev/null

无法在python中将共享库输出重定向到/dev/null,python,linux,stdout,stderr,Python,Linux,Stdout,Stderr,我试图将共享库创建的对象的构造函数的输出重定向到/dev/null。建筑的副作用是印刷大量我不需要的垃圾。 代码如下: f = open("/dev/null", 'w') tmpErr = sys.stderr tmpOut = sys.stdout sys.stderr = f sys.stdout = f foo = Foo(param1, param2) sys.stderr = tmpErr sys.stdout = tmpOut f.close() 如果我将函数调用替换为一个简单的

我试图将共享库创建的对象的构造函数的输出重定向到/dev/null。建筑的副作用是印刷大量我不需要的垃圾。 代码如下:

f = open("/dev/null", 'w')
tmpErr = sys.stderr
tmpOut = sys.stdout
sys.stderr = f
sys.stdout = f
foo = Foo(param1, param2)
sys.stderr = tmpErr
sys.stdout = tmpOut
f.close()
如果我将函数调用替换为一个简单的打印(例如打印“hello”)或对本地函数的调用,那么重定向似乎可以工作。 此外,使用shell(tcsh)中的“>&”操作符,我成功地重定向了所有输出


我在这里遗漏了什么?

什么是
(调用库函数)
样子?@Blender我编辑了question@WhiteZebraFoo是做什么的?一个常见的问题是,当您引用DLL或其他程序时,它使用本机函数,如
printf
。他们不尊重Python的
sys
模块,因为他们不知道它的存在。取决于Foo做什么,以及你如何与共享库交互,你如何解决问题。相关:@FakeRainBrigand我不知道库具体做什么。这对我来说是个黑盒子。我只知道它是用C++编写的。