如何使用 subprocess.Popen 中的 STDIN

How to use STDIN from subprocess.Popen

我怎样才能实现类似

的东西
$ echo "hello" | my_app

使用 Python 的子进程?

subprocess.Popen() 需要 STDIN 的管道或文件句柄。但我想通过变量为被调用程序提供 STDIN。所以像

myinput = "hello"
subprocess.Popen("an_external_programm", stdin=myinput)
….

在名为 myscript.py

的 python 脚本中
import sys

for line in sys.stdin:
     print(line)

在 Unix 中

回声'hello' | myscript.py

我使用 Popen.communicate()

解决了我的问题

所以某种伪代码:

proc = subprocess.Popen(…)
proc.communicate(input="my_input_via_stdin")