我尝试在我的java程序中运行python脚本。我想要做的是捕获python程序的exitValue并通过System.out.println将其写出来。
这是Python代码:
import sys
import subprocess
print "hallo"
i = sys.argv[0]
path = "R:\\xxx\\xxx\\xxx\\read"
resultlist = []
if i == 0:
result = True
else:
result = False
resultlist.append(result)
resultlist.append(path)
sys.exit(resultlist)
Processbuilder方法.waitFor()和.exitValue()只给出0或1。所以我无法使用它。
有没有办法从我的java程序中的python脚本中捕获sys.exit(resultlist)的值/字符串?
答案 0 :(得分:0)
man 2 exit
:
The function _exit() terminates the calling process "immediately". Any open file descriptors belonging to the process are closed; any children of the process
are inherited by process 1, init, and the process's parent is sent a SIGCHLD signal.
**The value status is returned to the parent process as the process's exit status, and can be collected using one of the wait(2) family of calls.**
您无法使用exit(2)
(系统调用)返回“复杂值”。如果python做到那么好,但这是一个“技巧”。不要依赖它。
您要做的是将程序的输出打印到stdout并捕获标准输出。为此,请使用Process
的{{1}}并将其吞入,例如.getInputStream()
。
由于您使用ByteArrayOutputStream
,因此您还可以在执行流程之前使用其ProcessBuilder
方法。从Java 7开始,它有quite a few options available。