2017-05-29 206 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() 

作为有效载荷是字节,而不是字符串。

相关问题