【发布时间】:2012-04-10 19:32:23
【问题描述】:
我想在 3 个命令之间创建一个管道:
cat = subprocess.Popen("cat /etc/passwd", stdout=subprocess.PIPE)
grep = subprocess.Popen("grep '<usernamr>'", stdin=cat.stdout, stdout=subprocess.PIPE)
cut = subprocess.Popen("cut -f 3 -d ':'", stdin=grep.stdout, stdout=subprocess.PIPE)
for line in cut.stdout:
# process each line here
但是python文档说:
使用
communicate()而不是.stdin.write、.stdout.read或.stderr.read避免由于任何其他操作系统管道导致的死锁 缓冲区填满并阻塞子进程。
那我应该如何使用cut.stdout?有人可以解释文档吗?
【问题讨论】:
标签: python stdout pipe stdin stderr