我刚刚从python 2.7移动到python 3.4并且我在字符串的简单比较中得到了类型错误,我不明白错误消息,我的代码在python 2中运行良好。我做错了什么?
错误消息:TypeError:类型str不支持缓冲区API
错误在第6行
def wait_prompt(device, msg, timing, error_msg, port):
output = device.readline()
t_end = time.time() + timing
counter = 0
while not msg in output:
if time.time() < t_end:
time.sleep(0.1)
device.write("\r")
output = device.readline()
device.flush()
loading_msg("msg",counter)
counter = counter + 1
else:
error(error_msg, port)
return 0
return 1
def initialize_router(device):
if wait_prompt(device, "[yes/no]:", 10, "waiting for question [yes/no]", port[0]) == 0:
return 0
答案 0 :(得分:2)
我没有所有上下文,但我认为output
的类型为bytes
而msg
是str
?如果您将msg in output
(第6行)更改为msg.encode('utf-8') in output
(或您使用的任何其他编码),那么它应该有效。
每当您在str
中搜索bytes
时都会发生此错误,使用特定字符编码对字符串进行编码会将其转换为字节序列并使两者更易于比较。