2014-04-25 63 views
1

我是編程領域的新手,我試圖掌握python循環背後的結構和邏輯。可能有人請向我解釋,爲什麼這件事情不工作:Biopython通過FASTA迭代不起作用?

from Bio.SeqUtils import GC 
from Bio import SeqIO 
i = 0 
record = SeqIO.read(open("group_%d.fasta"), "fasta")% i 
for x in record.seq: 
    print GC(record.seq) 
    i+=1 

上面的代碼產生以下錯誤:

IOError: [Errno 2] No such file or directory: 'group_%d.fasta') 

回答

2

你只需要字符串格式化有點不對勁。

此:

record = SeqIO.read(open("group_%d.fasta"), "fasta")% i 

應該是:

record = SeqIO.read(open("group_%d.fasta" % i), "fasta") 

我會移動那個東西一with語句中,以確保該文件實際上是正確關閉。

with open("group_%d.fasta" % i, "r") as fasta: 
    record = SeqIO.read(fasta, "fasta") 
+1

非常感謝,我實際上嘗試過類似的東西,但不完全是這樣,它實際上起作用了!我非常感謝你的幫助。 –

1

record = SeqIO.read(open("group_%d.fasta"), "fasta")% i 

不會做的事情在你認爲的順序。它嘗試的第一件事是:

open("group_%d.fasta") 

這會失敗,並顯示錯誤。您需要將括號內的格式參數:

record = SeqIO.read(open("group_%d.fasta" % i), "fasta") 

,或者更好,切換到更現代str.format

record = SeqIO.read(open("group_{0:d}fasta".format(i)), "fasta") 

這使得它更清晰,其中格式化參數應該去。

+0

謝謝,這正是我想要的:D –