2014-06-30 107 views
0

我試圖捕獲通過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) 
+1

它看起來像你指揮輸出到'../結果/ trimmed.fq'與你的shell命令,爲什麼你會被期待從任何標準輸出輸出? –

+0

您正在使用'> ../ results/trimmed.fq'寫入文件。如果您在終端中運行該命令,您是否看到任何輸出?還是一切都被轉儲到該文件? – Engineero

回答

2

> ...重定向命令將文件的輸出;因此,您將不會從命令中獲得任何輸出。刪除> ...部分:

cmd = 'cat input.fq | fastx_clipper -Q33 -a TGGAATTCTCGGGTGCC -l 5 -c -n -v | fastx_trimmer -Q33 -f 2' 
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' 
相關問題