2010-07-17 3 views
0

У меня есть проблема с, если код заявления ниже: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() 

По какой-то причине код пытается присвоить «JOB_ID» в файл FASTA в return_blast, даже если он должен был вернуться " жаль никаких результатов ". Я также понимаю, что имена файлов и расширения разные. У меня есть причины для этого.

Код отлично работает, когда файл test_empty не пуст.

+1

Как именно эти две функции связаны? –

+0

@Tim, я изменил отступ, потому что он вводил в заблуждение (и отступы - все в python) –

+1

@Tim, отступ в коде, который вы отправили, был неправильным, так что понять вашу проблему невозможно. Проверьте его и отредактируйте свой Q (подсказка: не используйте вкладки - отступ с четырьмя пробелами на уровень). Не уверен, что @Brendan правильно прочитал ваш разум в его редактировании отступов, так как ваша проблема может быть легко связана с неправильными отступами (в зависимости, как @Greg справедливо спрашивает, как две, казалось бы, изолированные функции фактически «соединяются»). –

ответ

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

+0

@Tim, пожалуйста, исправьте это в вопросе, чтобы мы знали, как выглядит ваш код. –

0

Может быть, некоторые просто отладки Printf стиль поможет:

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

Тогда вы можете хотя бы увидеть, что получает «job_ID» ваша функция. Это важно для того, чтобы выяснить, почему ваш оператор if терпит неудачу.

Смежные вопросы