2017-05-29 210 views
1

我將此作爲MQTT消息接收器的一部分,並且我試圖將代碼移植到Python 3,問題與一些if,else語句一起使用絕對沒有關於Python 3,例如這一次,如果語句適用於Python 2,但不適用於python 3

if message.topic == "ledDoorSW_mqtt": 
    if str(message.payload) == "1": 
     device.setPinHigh(13) 
    elif str(message.payload) == "0": 
     device.setPinLow(13) 

我瞭解有關於如何每個版本的享受串根本性的分歧,但未能找到故障原因是這裏的情況。

任何幫助表示讚賞!! 感謝..

+0

這些實際上由我控制,在代碼的其他部分,我決定什麼字符串應該是主題和有效載荷。 – Mo3tasm

+0

添加'print(message.topic);的輸出。 print(type(message.topic)); print(message.payload); print(type(message.payload))'(就在第一個'if'之前,並且在Python 3中,其中這段代碼據說不像預期的那樣工作)。 – DeepSpace

+1

我的猜測是'message.payload'是Python 3中的'bytes'對象,Python 2中只是'str'。如果是這樣的話,您需要首先在Python 3中對其進行decode()。 – poke

回答

0

感謝「戳」和「DeepSpace」解決的辦法就是寫

message.payload.decode() 

作爲有效載荷是字節,而不是字符串。

相關問題