在python2.7脚本中,我使用subprocess.call运行这样的Java程序:

java_command = "java -jar /path/to/java_program.jar %s %s >> %s" % (infile, outfile, logfile)
subprocess.call(java_command, shell=True)
...
#Do other stuff unrelated to this output


在大多数情况下,这可以正常工作,但是在某些情况下,java程序会出错:

Exception in thread "main" java.lang.NullPointerException
    at MyProgram.MainWindow.setProcessing(MainWindow.java:288)


问题是我的python脚本随后停滞在subprocess.call()行上,无法执行“其他操作”。

有没有一种方法可以编辑我正在使用的java_command或我正在使用subprocess的方式来继续python脚本,即使Java程序挂起也可以吗?

请注意,我无法修改Java程序的代码。

最佳答案

我认为您想要同一包中的check_call方法:

try:
    status = subprocess.check_call(java_command, shell=True)
except CalledProcessError as e:
    # The exception object contains the return code and
    # other failure information.
    ... react to the failure and recover

10-05 23:24