对FASTA的Biopython迭代不起作用?

时间:2014-04-25 20:56:00

标签: python

我是编程领域的新手,我试图掌握python循环背后的结构和逻辑。有人可以向我解释,为什么这件事不起作用:

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 个答案:

答案 0 :(得分: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")

这使得格式化参数应该更清楚。