【发布时间】:2015-01-09 11:25:54
【问题描述】:
我编写了以下代码从 NCBI 下载多个序列。
import numpy as np
from Bio import Entrez
Entrez.email ="user@example.com"
data = np.loadtxt('/home/Documents/XXX.txt', dtype="string")
data
array(['YP_615060', 'YP_615061', 'YP_615062', ..., 'YP_611146',
'YP_611148', 'YP_611150'],
dtype='|S12')
ids=data[:10]
ids_1=data[10:20]
ids_1=",".join(ids_1)
ids_2=data[20:30]
ids_2=",".join(ids_2)
total=(ids, ids_1, ids_2)
for c in total:
handle = Entrez.efetch(db="protein", id=c, rettype="fasta", retmode="txt")
handle.read()
我收到一个错误
File "<stdin>", line 3
handle.read()
^
SyntaxError: invalid syntax
我想我写错了'foor'循环,但我不知道有什么问题。这应该是一个微不足道的问题,但我找不到解决方法。
如果我测试 for 循环并且我不调用
handle.read()
运行
>>>for c in total:
... handle=Entrez.efetch(db="protein", id=c, rettype="fasta", retmode="txt")
...
for 循环仍在等待某些东西。我在这里错过了什么?
【问题讨论】:
-
试试
record = Entrez.read(handle)(见documentation) -
我找不到任何语法错误。也许它在您的代码的前一行?行号很低,您确定它是正确的文件吗?
-
@efrem 注意,
handle.read()不是循环块的一部分。对吗? -
@ÁlvaroGómez 看起来像是一个交互式会话的混合输入和输出。
标签: python loops for-loop biopython