我有一份细菌种类的清单,想在FTP服务器上数一数它们的菌株数量。但其中一些在NCBI中不存在,从而导致错误。如何跳过错误并继续计数
这是初始代码:
output = open("bact_count.csv", "wt")
splist = [s.strip('\n') for s in open("bact_list_refseq", 'r')]
for i in splist:
sp_name = i.strip('\n')
req
=urllib2.Request('ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/{}/assembly_summary.txt'.format(sp_name))
response = urllib2.urlopen(req)
the_page = response.read()
print(i, '\t', len(str(the_page).split('\\n')) - 3)
output.close()
我试过使用try/except。但这没用
output = open("re.csv", "wt")
splist = [s.strip('\n') for s in open("bact_list_refseq", 'r')]
for i in splist:
sp_name = i.strip('\n')
for i in sp_name:
try:
req = urllib2.Request('ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/{}/assembly_summary.txt'.format(sp_name))
except:
pass
finally:
response = urllib2.urlopen(req)
the_page = response.read()
print(i, '\t', len(str(the_page).split('\\n')) - 3)
output.close()
因此,我应该得到包含两列的表:物种名称和数量
当发生错误时,将不会设置req的值,因此这意味着在
finally
语句中,您使用的是上一次迭代中的req值您应该将代码从
finally
语句移到try
语句中另一件事,您不应该让except语句过于宽泛,您应该将其更改为只接受由缺少项引起的特定错误
相关问题 更多 >
编程相关推荐