繁体   English   中英

如何在python中使用子进程管道

[英]How to use subprocess piping in python

我有这个:

$ cat waitforinput.sh 

#!/bin/sh
while read line
do
    echo $line
done                    

我这样做:

>>> p1 = subprocess.Popen("/home/abc/waitforinput.sh", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)

>>> for i in xrange(1000):
...     p1.stdin.write("this is a good idea")

但是当我现在这样做时,我看不到输出:

>>> for i in p1.stdout:
...     print i
... 

我究竟做错了什么 ?

你需要一个换行符:

p1.stdin.write('this is a good idea\n')

简单的解释:您运行的shell脚本需要一个完整的行,最后一行带有换行符,这就是它知道行完成的方式。

注意:有时您甚至必须添加p1.stdin.flush()因为缓冲。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM