在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