[英]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.