2013-05-11 46 views
0

我想要做的事情与接受的答案in this question非常相似,但是有一点变化。最后一行:管道进入子程序调用

print p3.communicate()[0] 

打印输出p3。我想基本上得到subprocess.call()类似的行为,而不是简单地在stdout接收输出。

例如,如果p3较小,使用communicate,对于较少的管道将更像一条管道,因为它实际上不会打开较少,而只是将输出打印出来。

有没有办法实现我之后的事情(实际上是打开少一点,而不是像猫一样行为并传达其输出)?向正确的方向点头会很棒。

+0

你能描述一下*你想用文字(没有代码)做什么*?然后你有什么尝试,例如,用'call(stdout = None)'替换最后一个'Popen(stdout = PIPE)/ communicate()',以及如何失败(一个显示问题的最小完整代码示例会有帮助) ? – jfs 2013-05-11 07:15:15

+0

我当时非常笨,完全没有阅读文档;我会在下面发表我的答案。 – hfaran 2013-05-11 07:22:27

回答

2

所以不是这样做的:

p3 = Popen(cmd, stdin=p2.stdout, stdout=PIPE) 
... 
print p3.communicate()[0] 

我可以这样做:

subprocess.call(cmd, stdin=p2.stdout) 

而且,让我做什么,我想要的。 :)