簡體   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