2016-05-31 80 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