Mar*_*ddy 7 python java jython
我在jython的java库中调用一个函数,它打印到stdout.我想从jython脚本中抑制此输出.我尝试使用像object(StringIO)这样的文件替换sys.stdout的python习惯用法,但这不会捕获java库的输出.我猜测sys.stdout不会影响java程序.在jython中是否有以编程方式重定向或抑制此输出的标准约定?如果不是我能以什
你可以System.setOut像这样使用:
>>> from java.lang import System
>>> from java.io import PrintStream, OutputStream
>>> oldOut = System.out
>>> class NoOutputStream(OutputStream):
... def write(self, b, off, len): pass
...
>>> System.setOut(PrintStream(NoOutputStream()))
>>> System.out.println('foo')
>>> System.setOut(oldOut)
>>> System.out.println('foo')
foo
Run Code Online (Sandbox Code Playgroud)
请注意,这不会影响Python输出,因为Jython System.out在启动时会抓取,因此您可以sys.stdout按照预期重新分配.