2016-05-31 65 views
1

我如何能实现像如何使用STDIN从subprocess.Popen

$ echo "hello" | my_app 

与Python的子进程的使用情况如何?

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

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

看一看'Popen.communicate()'。链接:https://docs.python.org/3/library/subprocess.html?highlight=subprocess#subprocess.Popen.communicate – elParaguayo

+0

你能清楚你的用例吗?首先,您看起来像是在向您的脚本传递“hello”,在第二个示例中,它是脚本中的变量。 – elParaguayo

+0

我想从我的Python脚本中调用一个外部工具,但是内容 - shell sxample中的“hello”来自Python变量。 – frlan

回答

1

我能够通过使用Popen.communicate()

所以某种伪代码来解决我的问题:

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

在Python脚本名为myscript.py

import sys 

for line in sys.stdin: 
    print(line) 

在UNIX

回声 '你好' | myscript.py