Python3 Type str不支持字符串comparaison上的缓冲区API

时间:2015-09-23 09:16:49

标签: python string python-3.x

我刚刚从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

1 个答案:

答案 0 :(得分:2)

我没有所有上下文,但我认为output的类型为bytesmsgstr?如果您将msg in output(第6行)更改为msg.encode('utf-8') in output(或您使用的任何其他编码),那么它应该有效。

每当您在str中搜索bytes时都会发生此错误,使用特定字符编码对字符串进行编码会将其转换为字节序列并使两者更易于比较。