我正在将一个程序(samtools)合并到管道中。samtools是一个程序,用于操作DNA序列比对是在一个SAM格式。它通过stdin和stdout接受输入并生成输出文件,因此很容易通过python的subprocess.Popen()进行控制。
当它运行时,它还向控制台输出短消息—显然不是使用stdout—我想知道是否也有可能捕获这些消息—可能通过获得操作系统生成的处理程序列表?
我想我的问题一般是如果有可能捕获程序控制台输出,如果它不是来自标准输出?谢谢你。
除了stdout和stderr之外没有其他控制台输出(假设samtools没有通过tty设备直接写入终端)。因此,如果没有使用子进程标准输出捕获输出,则必须将其写入标准错误,也可以使用Popen()
和stderr=subprocess.PIPE
并检查结果进程对象的stderr
属性来捕获输出。