将两个子流程输出链接到另一个子流程inpu

2024-04-18 19:47:00 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有个问题。我有一个子进程,它读取一个文件并将输出重定向到子进程管道。我有另一个子进程,它做同样的事情。我要做的是对每个输出运行diff命令。可能使用另一个子进程,但不知何故从另外两个进程读取两个标准输出。这里有个例子。在

proc1 = subprocess.Popen(['samtools', 'view', 'file1'], stdout=subprocess.PIPE)
proc2 = subprocess.Popen(['samtools', 'view', 'file2'], stdout=subprocess.PIPE)

理论上这就是我想做的。。。在

^{pr2}$

如果有人不明白我的意思,我可以解释得更好,但如果你知道任何关于子流程的知识,那么你就会明白这一点。在


Tags: 文件命令view标准管道进程stdoutdiff
2条回答

我认为实现这一点的一个好方法是将两个初始进程的输出重定向到两个不同的named pipes,并在第三个进程中将它们用作文件来获取输入。在

import os
from subprocess import Popen, PIPE

outside, inside = os.pipe()

one = Popen(['/path/to/one'], stdout = inside)
two = Popen(['/path/to/two'], stdout = inside)

merge = Popen(['/path/to/merge'], stdin = outside)

这不会对输出运行diff函数。它只是将两个程序引导到“合并”进程的输入。在

无法读取同一管道中两个输入之间的差异。在

相关问题 更多 >