2016-04-04 9 views
1

Ich habe eine Schleife, die den folgenden Code alle 5 Minuten ausgeführt wird, der Code tatsächlich eine Zeitreihe von Stockprices herunterlädt. Manchmal, vielleicht einmal in der Woche bekomme ich folgende Fehlermeldung:Python-Liste Index außerhalb des Bereichs Fehler umgehen

Traceback (most recent call last): 
    File "./regression_12_5min.py", line 284, in <module> 
    last_price_long = listone[(len(listone)-1)][4] 
IndexError: list index out of range 

ich denke, aber nicht sicher, dass ... dass dies geschieht, weil in dieser Gelegenheit erhalte ich keine erhalte keine Daten vom Makler.

Dies ist der Code:

 try: 
      r = requests.get(myurl, params=price_long) 

     except: 
      pprint("Si e' verificato un errore") 
     else: 
       print "cwlong5" 
      pprint(r.status_code) 
      print(r.headers['content-type']) 
      pprint(r.url) 
       listone = crea_lista(r) 

     last_price_long = listone[(len(listone)-1)][4] 
     print " ultimo prezzo long" + " " + str(last_price_long) 

Ist meine Idee über die Ursache des Fehlers richtig? Gibt es eine Möglichkeit, diesen Fehler zu umgehen? Das Problem ist, dass die erhöhten Fehler blockiert die Schleife, aber ich würde nur in Ordnung sein, wenn statt sich bloking die Schleife erneut starten, nachdem andere 5 Minuten

Dank

Antwort

3

Zunächst einmal Sie, dass Ihre response.status_code überprüfen müssen ist gleich 20X, um sicherzustellen, dass Sie eine erfolgreiche Anfrage haben. Zweitens sollten Sie immer überprüfen, ob die Liste nicht leer ist, bevor Sie einen Wert abrufen, um Indexfehler zu vermeiden. Mit diesem gesagt können Sie immer Indexfehler wie diese

try: 
    last_price_long = listone[-1][4] 
except IndexError: 
    last_price_long = None 
fangen
Verwandte Themen