![](/img/trans.png)
[英]Python Subprocess reading from stdout blocks (reading output in real time)
[英]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.