-1

だから私は以下のこのコードに取り組んでいます。私のReff.txtに複数の行がある場合、問題なく準拠しました。しかし、Reff.txt ファイルが 1 行の場合は機能しません。何故ですか?また、コードの「試行」部分が実行されず、常に「例外」部分のみが実行されるのはなぜだろうか。

  • だから私はIDのリストを持つ参照ファイルを持っています(1行に1つのID)
  • 参考ファイル(Reff.txt)を参考に、ウェブサイトからデータベースを検索したり、ネットワーク内のサーバーからデータベースを検索したりしています。
  • 私が得るべき結果は、出力ファイルとそのIDの情報を含むファイルがあるはずです。各参照 ID に対して

ただし、このコードは「try:」部分では何もしません。

import sys

import urllib2

from lxml import etree

import os

getReference = open('Reff.txt','r') #open the file that contains list of reference ids

global tID 

for tID in getReference:    

    tID = tID.strip()

    try:
        with open(''+tID.strip()+'.txt') as f: pass
        fileInput = open(''+tID+'.txt','r')
        readAA = fileInput.read()
        store_value = (readAA.partition('\n'))
        aaSequence = store_value[2].replace('\n', '') #concatenate lines
        makeList = list(aaSequence)#print makeList
        inRange = ''
        fileAddress = '/database/int/data/'+tID+'.txt'
        filename = open(fileAddress,'r')#name of the working file
        print fileAddress
        with open(fileAddress,'rb') as f:
            root = etree.parse(f)
            for lcn in root.xpath("/protein/match[@dbname='PFAM']/lcn"):#find dbname =PFAM

                start = int(lcn.get("start"))#if it is PFAM then look for start value
                end = int(lcn.get("end"))#if it is PFAM then also look for end value
                while start <= end:
                    inRange = makeList[start]
                    start += 1
                    print outputFile.write(inRange) 
                    outputFile.close()
                break
            break
        break

    except IOError as e:


        newURL ='http://www.uniprot.org/uniprot/'+tID+'.fasta'
        print newURL
        response = urllib2.urlopen(''+newURL) #go to the website and grab the information 
        creatNew = open(''+uniprotID+'.txt','w')
        html = response.read() #read file
        creatNew.write(html) 
        creatNew.close()
4

1 に答える 1

1

したがって、Try/Except を実行すると、try が失敗した場合、Except が実行されます。Try は常に失敗するため、Except は常に実行されています。

これの最も可能性の高い理由は、「print outputFile.write(inRange)」を持っているが、以前に outputFile を宣言していないことです。

ETA: また、for ループの最初のパスまでのテストのみに関心があるようですね? その時点でブレイクします。その場合、他の休憩は無関係です。

于 2012-07-10T16:24:59.310 に答える