我编写了以下代码,从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循环仍在等待某事。我在这里缺少什么?
答案 0 :(得分:4)
这是一个疯狂的猜测,但您的代码看起来像交互式会话的混合输入和输出,我可以在交互模式下粘贴代码块时重现您的错误:
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(10):
... print i
... print "done"
File "<stdin>", line 3
print "done"
^
SyntaxError: invalid syntax
相反,尝试仅粘贴 for
循环及其正文,然后按Enter(两次),然后粘贴{{1行。 (也就是说,假设此行不是循环的一部分;如果是,请修复缩进。)或者,将所有代码放入文件并使用handle.read()
运行该文件。