关于Python 3:Python 3 – 使用子进程模块执行java命令行提示符

Python 3 - Using subprocess module to execute java command line prompt

我的计算机上有一个java程序,它有一个命令行api。 如果在命令提示符中导航到相应的文件夹,我可以输入命令

java -cp p2.jar propokertools.cli.RunPQL

从命令提示符进行各种扑克计算。 我希望能够通过Python与该程序进行交互。

我试过了:

1
p = subprocess.check_output(['java', '-cp', 'p2.jar propokertools.cli.RunPQL'], cwd='C:\\Program Files\\PPTOddsOracle\\ui_jar')

但得到这个错误:

在check_output中的文件"C: Python34 lib subprocess.py",第620行
引发CalledProcessError(retcode,process.args,output = output)
subprocess.CalledProcessError:命令'['java',' - ct p2.jar propokertools.cli.RunPQL']'返回非零退出状态1

我决定不那么雄心勃勃,只是想弄清楚如何让Python返回我的java版本,但是

1
p = subprocess.check_output(['java', '-version'])

1
2
p = subprocess.Popen(["java","-version"], stdout=subprocess.PIPE)
p.stdout.read()

两者都返回空字节字符串,所以我觉得我做错了。 任何帮助将不胜感激。


我想到了。 我错过了'p2.jar propokertools.cli.RunPQL'需要拆分成单独的参数。

1
p = subprocess.check_output(['java', '-cp', 'p2.jar', 'propokertools.cli.RunPQL'], cwd='C:\\Program Files\\PPTOddsOracle\\ui_jar')