如何排除错误并将结果重定向到新fi

2024-09-21 05:54:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份细菌种类的清单,想在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()  

因此,我应该得到包含两列的表:物种名称和数量


Tags: thenameinforoutputresponsepageftp
1条回答
网友
1楼 · 发布于 2024-09-21 05:54:09

当发生错误时,将不会设置req的值,因此这意味着在finally语句中,您使用的是上一次迭代中的req值

您应该将代码从finally语句移到try语句中

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))
            response = urllib2.urlopen(req)
            the_page = response.read()
            print(i, '\t', len(str(the_page).split('\\n')) - 3) 
        except:
            continue

output.close()

另一件事,您不应该让except语句过于宽泛,您应该将其更改为只接受由缺少项引起的特定错误

相关问题 更多 >

    热门问题