我正在尝试捕获通过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)
答案 0 :(得分:2)
> ...
将命令的输出重定向到文件;因此,你不会从命令中得到任何输出。删除> ...
部分:
cmd = 'cat input.fq | fastx_clipper -Q33 -a TGGAATTCTCGGGTGCC -l 5 -c -n -v | fastx_trimmer -Q33 -f 2'
答案 1 :(得分:0)
> ../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'