【发布时间】:2012-02-15 23:26:34
【问题描述】:
所以我这里有个问题。我有一个读取一个文件并将输出重定向到子进程管道的子进程。我有另一个做同样事情的子进程。我想要做的是在每个输出上运行一个 diff 命令。可能使用另一个子进程,但以某种方式从其他两个标准输出中读取。这是一个例子。
proc1 = subprocess.Popen(['samtools', 'view', 'file1'], stdout=subprocess.PIPE)
proc2 = subprocess.Popen(['samtools', 'view', 'file2'], stdout=subprocess.PIPE)
理论上这就是我想做的……
proc3 = subprocess.Popen(['diff', proc1.communicate()[0], proc2.communicate()[0]], stdout=subprocess.PIPE)
如果有人不明白我的意思,我可以更好地解释,但希望如果您对子流程有所了解,那么您就会明白这一点。
【问题讨论】:
-
我不认为可以这样做,因为一个进程只有一个标准输入。您可能需要将输出写入一些临时文件,然后在这些文件上运行第三个进程。
-
diff作用于文件,所以你必须给它一些像文件一样嘎嘎作响的东西
标签: python subprocess pipe