我的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文件不为空时,代码可以正常工作。
答案 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
语句失败的原因至关重要。