我正在面對一個在python中使用subprocess.call操作符的尷尬問題。 我必須多次運行流水線程序(bowtie),然後以不同的方式使用輸出。爲此,我使用subprocess.call。在python中使用subprocess.call的多堆stdin
問題是領結需要輸入2個文件,一個索引和一個文本文件,我無法將它們都分配給stdin參數。
我已經嘗試過在args中包含索引的路徑,但當然bowtie不會將它識別爲索引並給我一個錯誤。既然這個指標總是一樣的,有沒有辦法避免這個問題?
這裏是我的工作(非常原始)的部分代碼:
inpath = "/media/2tbhd/workdata/nanocage_noadapt/zf/fasta/zf_ad_c_r2.fasta"
ind_path = "indexes/zf_gen_topl"
for elem in plist:
cmd = subprocess.call(["bowtie","-f","-v 3", "--best" "--suppress 6,7" "-p 6"], shell = True, stdin = inpath, ind_path)
如何從命令行調用'bowtie'?您不能將任何編程語言中的兩個文件分配給標準輸入,我知道...「 – mgilson 2012-04-03 18:11:26
」但當然,領結不會將其識別爲索引並給我一個錯誤「 - 它具體給出了什麼錯誤消息? – 2012-04-03 18:13:22
請嘗試編寫一個簡單的shell命令,以您想要的方式調用bowtie,並查看它是否有效。如果它確實起作用,請將其粘貼到此處,並且如何將其轉換爲subprocess.call函數將會更容易。如果它不起作用,我可以試着弄清楚你對bowtie做錯了什麼。 – weronika 2012-04-03 21:56:55