2010-07-17 103 views
0

我有问题,以下if语句代码:的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”在fasta文件中return_blast即使它应该已返回“抱歉没有结果“。我也明白文件名和扩展名是不同的,我有我的理由这样做。

当test_empty文件不为空时,代码完美工作。

+1

这两个函数究竟是如何连接的? – 2010-07-17 03:31:31

+0

@Tim,我改变了缩进,因为它是误导性的(缩进是python中的一切) – 2010-07-17 03:32:17

+1

@Tim,你发布的代码中的缩进全部都是错误的,所以不可能理解你的问题。请检查它并编辑你的Q(提示:不要使用制表符 - 仅在每个级别有四个空格缩进)。不确定@Brendan在他的缩进编辑中正确地阅读了你的想法,因为你的问题可能很容易被连接到错误的缩进上(这取决于@Greg正确地询问两个看起来孤立的功能是如何“连接”的)。 – 2010-07-17 03:32:28

回答

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() 

我不认为你的代码会即使运行..

+0

如果我的文件代码正确缩进。它在文件不是空的时候运行,但当文件时没有捕获。 – Tim 2010-07-17 03:40:47

+0

@Tim,请在问题中修复它,以便我们知道代码的实际外观。 – 2010-07-17 03:42:03

0

也许一些简单的printf型调试将帮助:

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

然后你至少可以看到你的函数收到了什么“job_ID”。这对于试图找出为什么您的if声明失败至关重要。