Python 3 - 使用 subprocess 模块执行 java 命令行提示符

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

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

java -cp p2.jar propokertools.cli.RunPQL

从命令提示符进行各种扑克计算。我希望能够通过 Python.

与该程序进行交互

我试过:

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

但出现此错误:

文件 "C:\Python34\lib\subprocess.py",第 620 行,在 check_output 提高 CalledProcessError(retcode,process.args,输出=输出) subprocess.CalledProcessError: 命令 '['java', '-cp p2.jar propokertools.cli.RunPQL']' returned 非零退出状态 1

我决定不那么雄心勃勃,只是想办法把 Python 变成 return 我的 java 版本,但是

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

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

两个 returned 空字节字符串,所以我认为我做错了什么。任何帮助将不胜感激。

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

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