首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中通过jpype调用时重定向jar输出

在python中通过jpype调用时重定向jar输出
EN

Stack Overflow用户
提问于 2019-06-26 02:57:49
回答 1查看 358关注 0票数 0

我在python中使用jpype调用jar文件中的代码。java代码将一大堆输出打印到stdout,我只想将其重定向到/dev/null。我该怎么做呢?我不能修改java代码(因为它是一个外部项目)。

下面是我的python代码:

代码语言:javascript
复制
import jpype
import jpype.imports
jpype.startJVM(jpype.getDefaultJVMPath(), '-Djava.class.path=%s' % astral)
jpype.imports.registerDomain('phylonet')
from phylonet.coalescent import CommandLine
CommandLine.main(['-i', input_file, '-o', output_file])
jpype.shutdownJVM()

幸运的是,我可以将所需的输出重定向到文件,但仍然会将许多不需要的输出直接定向到stdout。我在一个进程池中调用多个实例,所以我最终得到了来自多个java代码实例的乱码输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 08:16:36

here窃取,然后转换为Python/JPype

代码语言:javascript
复制
import jpype
import jpype.imports
from jpype.types import *

jpype.startJVM(convertStrings=False)

from java.lang import System
from java.io import PrintStream, File

original = System.out
System.out.println("Hello")
System.setOut(PrintStream(File("NUL"))) # NUL for windows, /dev/null for unix
System.out.println("Big")
System.setOut(original)
System.out.println("Boy")

如果您需要对操作系统保持中立,则需要编译您自己的NullPrintStream概念,因为目前不可能在JPype中扩展类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56760450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档