subprocess python Popen 打开 java jar

subprocess python Popen to open java jar

我是 python 子流程的新手,我不理解文档。

我正在尝试 运行 我的 python 程序中的一个 jar 文件并将输出通过管道返回到 python。

sys.stdout.write("haha")

subprocess.Popen(['java', 'myjarfile.jar'], stdin= subprocess.PIPE,
        stdout = subprocess.PIPE)
ans = raw_input("")

然而,这似乎不起作用

b'haha' bytestring 作为输入传递给 java 子进程并将其标准输出作为 ans bytestring:

#!/usr/bin/env python3
from subprocess import check_output

ans = check_output(['java', '-jar', 'myjarfile.jar'], input=b'haha')

input 参数仅在 Python 3.4 之后才受支持,您可以在较早的 Python 版本上使用 .communicate()

#!/usr/bin/env python
from subprocess import Popen, PIPE

p = Popen(['java', '-jar', 'myjarfile.jar'], stdin=PIPE, stdout=PIPE)
ans = p.communicate(b'haha')[0]
if p.returncode != 0:
   raise Error