2016-02-03 39 views
-1

目前我想通過下面這個教程使我的覆盆子PI與亞馬遜的AWS物聯網2工作:https://www.hackster.io/phantom-formula-e97912/network-monitoring-with-aws-iot-b8b57c?ref=platform&ref_id=425_trending___&offset=12Python函數的帶寬門檻IndexError:列表索引超出範圍的錯誤

對於這個功能,這應該發出警告對於超出網絡帶寬門檻:

def monspeed(): 
    c = checkspeed(-1) 
    if c[2] > 2000000: # customize the interface/speed to trigger the warning 
     awsmsg = {'state':{ 'reported': {'warning': 'speed' , 'result': c}}} 
     payload = json.dumps(awsmsg) 
     print (awsmsg) 
     client.publish(topic,payload,qos,retain) 

我收到此錯誤信息:

Traceback (most recent call last): 
File "./netmon.py", line 158, in <module> 
monspeed() 
File "./netmon.py", line 98, in monspeed 
if c[2] > 2000000: # customize the interface/speed to trigger the warning 
IndexError: list index out of range 
+3

歡迎來到本網站!請提供更多信息,以便人們可以更好地幫助您。在這種情況下,至少checkpeed()的內容是必需的。請參見[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – glibdud

回答

0

錯誤提示c對象的元素少於3個。當它接收-1作爲參數時,這取決於checkspeed的輸出。

爲了看看發生了什麼事c,使用try /除了這樣的塊:

try: 
    if c[2] > 2000000: 
     awsmsg = {'state':{ 'reported': {'warning': 'speed' , 'result': c}}} 
     payload = json.dumps(awsmsg) 
     print (awsmsg) 
     client.publish(topic,payload,qos,retain) 
except IndexError as e: 
    print 'What is "c"?', type(c) 
    print 'Values in "c":', c 
    raise e 

這樣做,你可以在瞬間檢查變量c的類型和瓦魯爾足球俱樂部被觸發錯誤時。

使用這種策略,您可以看到可能觸發錯誤的變量會發生什麼情況,從而獲得有用的信息以找出哪些工作出錯。

相關問題