繁体   English   中英

从Python子进程读取stdout

[英]Reading stdout from Python subprocess

我试图捕获通过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)

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

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

> ../results/trimmed.fq确实会将您的命令输出重定向到../results/trimmed.fq,就像falsetru所说的那样,因此您不应期望在p.stdout打印任何行。 但是,如果在运行命令后该文件仍然为空,我会怀疑input.fq或fastx_clipper的参数有问题。

我还要指出的是,如果要将输出都写入文件并在终端中显示,则可以使用tee命令。 它看起来像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM