未捕获KeyError

时间:2018-01-29 21:45:11

标签: python exception

我对我遇到的错误感到有些困惑。我有一些代码应该从数据库中检索json文件并在其中搜索代表代码的子字符串。据我所知,我的查询将有相应的代码,然后一切顺利,或者我的查询将没有相应的代码,然后我的代码将触发KeyError。我写了一个try / except块来捕获这个(预期的)KeyError,但是没有捕到错误。我在这里错过了什么?

注意:我刚开始涉足多处理,这与此有关吗?

以下是相关代码:

request_counter = 0
while request_counter < 3:
    try:
        if ' - reduced' in metabolite:
            metabolite = 'reduced ' + metabolite[:-10]
        cts_output = requests.get(
                        'http://cts.fiehnlab.ucdavis.edu/'
                        'service/convert/Chemical%20Name/'
                        'KEGG/' + metabolite)
        kegg_id = str(json.loads(cts_output.text)[0]['result'][0])
        metabolite_to_KEGG[bigg_id][kegg_id] = metabolite
        request_counter = 3
    except KeyError and IndexError:
        if request_counter == 2:
            metabolite_no_KEGG[bigg_id].append(metabolite)
        request_counter = request_counter + 1

这个块在几个for循环中。

追溯:

  

Traceback(最近一次调用最后一次):文件   &#34; /Users/dcoukos/anaconda/lib/python3.6/multiprocessing/pool.py" ;,   第119行,在工人中       result =(True,func(* args,** kwds))getBrendaKeggs中的文件&#34; GetKeggs.py&#34;,第131行       kegg_id = str(json.loads(cts_output.text)[0] [&#39;结果&#39;] [0])KeyError:&#39;结果&#39; &#34;&#34;&#34;

     

上述异常是导致以下异常的直接原因:

     

回溯(最近一次呼叫最后):文件&#34; GetKeggs.py&#34;,第223行,在          brenda_keggs.update(bk1.get())File&#34; /Users/dcoukos/anaconda/lib/python3.6/multiprocessing/pool.py",   第644行,在得到       raise self._value KeyError:&#39;结果&#39;

0 个答案:

没有答案