Python:if语句的问题

时间:2010-07-17 03:27:30

标签: python

我的if语句代码有问题:

do_blast(x):
    test_empty = open('/home/rv/ncbi-blast-2.2.23+/db/job_ID/%s.blast' % (z), 'r')
        if test_empty.read() == '':
            test_empty.close()
            return 'FAIL_NO_RESULTS'
        else:
            do_something

def return_blast(job_ID):
     if job_ID == 'FAIL_NO_RESULTS':
        return '<p>Sorry no results :( boooo</p>'
    else:
        return open('/home/rv/ncbi-blast-2.2.23+/db/job_ID/job_ID_%s.fasta' % (job_ID), 'r').read()

由于某种原因,代码尝试将“job_ID”分配给return_blast中的fasta文件,即使它应该返回“抱歉没有结果”。我也理解文件名和扩展名不同我有理由这样做。

当test_empty文件不为空时,代码可以正常工作。

2 个答案:

答案 0 :(得分:1)

我不确定这是不是问题,但是你的代码没有正确缩进(在Python中很重要)。我相信这就是你想要的:

do_blast(x):
    test_empty = open('/home/rv/ncbi-blast-2.2.23+/db/job_ID/%s.blast' % (z), 'r')
    if test_empty.read() == '':
        test_empty.close()
        return 'FAIL_NO_RESULTS'
    else:
        do_something

def return_blast(job_ID):
    if job_ID == 'FAIL_NO_RESULTS':
        return '<p>Sorry no results :( boooo</p>'
    else:
        return open('/home/rv/ncbi-blast-2.2.23+/db/job_ID/job_ID_%s.fasta' % (job_ID), 'r').read()

我认为你的代码甚至不会运行..

答案 1 :(得分:0)

也许一些简单的printf样式调试会有所帮助:

def return_blast(job_ID):
    print 'job_ID: ', job_ID
    # ... 

然后你至少可以看到你的功能收到的“job_ID”。这对于试图弄清楚if语句失败的原因至关重要。