从Python子进程读取标准输出

2024-10-01 15:48:28 发布

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

我试图捕获通过python启动的进程的输出,以用于日志记录。但出于某种原因,尽管我做了很多尝试,但似乎没有一个解决方案对这个特殊的案例有效。 有人能帮忙吗? 我的代码如下所示:

cmd = 'cat input.fq | fastx_clipper -Q33 -a TGGAATTCTCGGGTGCC -l 5 -c -n -v | fastx_trimmer -Q33 -f 2 > ../results/trimmed.fq' 
p = Popen(cmd,shell=True,stdout = PIPE) 
for line in p.stdout:output.write(line)

Tags: 代码cmdinput进程stdout记录line解决方案
2条回答

> ...将命令的输出重定向到一个文件;因此,您将无法从命令获得任何输出。删除> ...部分:

cmd = 'cat input.fq | fastx_clipper -Q33 -a TGGAATTCTCGGGTGCC -l 5 -c -n -v | fastx_trimmer -Q33 -f 2'

> ../results/trimmed.fq确实会将命令的输出重定向到../results/已修剪.fq正如falsetru所说,所以您不应该期望在p.stdout中打印任何行。但是,如果在运行命令后该文件仍然是空的,我会怀疑有什么问题输入.fq或者将参数放入fastx\u clipper。你知道吗

另外,我只想指出,如果您想将输出写入文件并在终端中显示它,那么可以使用tee命令。它看起来是这样的:

'cat input.fq | fastx_clipper -Q33 -a TGGAATTCTCGGGTGCC -l 5 -c -n -v | fastx_trimmer -Q33 -f 2 | tee ../results/trimmed.fq'

相关问题 更多 >

    热门问题