如何从 subprocess.Popen 使用 STDIN [重复]
Posted
技术标签:
【中文标题】如何从 subprocess.Popen 使用 STDIN [重复]【英文标题】:How to use STDIN from subprocess.Popen [duplicate] 【发布时间】:2016-09-29 16:35:04 【问题描述】:我怎样才能实现类似的东西
$ echo "hello" | my_app
使用 Python 的子进程?
subprocess.Popen() 需要 STDIN 的管道或文件句柄。但我想通过变量为被调用程序提供标准输入。所以像
myinput = "hello"
subprocess.Popen("an_external_programm", stdin=myinput)
….
【问题讨论】:
看看Popen.communicate()
。链接:docs.python.org/3/library/…
你能说清楚你的用例吗?首先,您看起来像是在向脚本传递“hello”,在第二个示例中,它是脚本中的一个变量。
我想从我的 Python 脚本中调用一个外部工具,类似于 shell 示例,但内容——来自 shell sxample 的“hello”来自一个 Python 变量。
实际上 Popen.communicate() 成功了
【参考方案1】:
在名为 myscript.py 的 python 脚本中
import sys
for line in sys.stdin:
print(line)
在 unix 中
echo '你好' |我的脚本.py
【讨论】:
【参考方案2】:我能够通过使用Popen.communicate()
解决我的问题
所以某种伪代码:
proc = subprocess.Popen(…)
proc.communicate(input="my_input_via_stdin")
【讨论】:
省略号字符 (...) 掩盖了此答案中的解决方案 :-)以上是关于如何从 subprocess.Popen 使用 STDIN [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python如何从迭代中获取与subprocess.Popen一起运行的变量输入
如何从 subprocess.Popen() 获取输出。 proc.stdout.readline() 块,没有数据打印出来
subprocess.call和subprocess.Popen