Python 比较字符串

Python Compare strings

我正在尝试比较 2 个字符串,一个来自 Pyserial,另一个是硬编码消息。它们似乎完全相同,但由于某种原因,函数 wait_prompt 只有 return 0.

 def wait_prompt(device, msg):
        device.write("\n\n")
        device.flush()

        msg = msg + "\n"
        output = device.readline()

        print("\n")
        print("Looking for: " + msg + "|end")
        print("CLI shows: " + output + "|end")

        if output == msg:
                return 1
        return 0

def initialize_router(device):

        print ("Router connected on port " + port[0])

        while wait_prompt(device, "Would you like to enter the initial configuration dialog? [yes/no]: ") == 0:
                time.sleep(1)

        device.write("no\n")
        device.flush()

        while wait_prompt(device, "Line protocol on Interface Vlan1, changed state to up") == 0:
                time.sleep(1)

        time.sleep(2)
        device.write("\n")
        device.flush()

虽然我在做,但有没有更好的方法通过控制台电缆与终端通信?我看到了 pexpect,但是它似乎不能连续工作。

解决方案

问题是最后的输出是 returning \r\r\n 而不是像我预期的那样 \n。我修改了代码以仅搜索字符串的一部分来验证测试。这是:

def wait_prompt(device, msg):
        device.write("\n\n")
        device.flush()
        output = device.readline()

        if msg in output:
                return 1
        return 0

def initialize_router(device):

        print ("Router connected on port " + port[0])

        while wait_prompt(device, "[yes/no]:") == 0:
                time.sleep(1)

        device.write("no\n")
        device.flush()

        while wait_prompt(device, "Line protocol on Interface Vlan1, changed state to up") == 0:
                time.sleep(1)

        time.sleep(2)
        device.write("\n")
        device.flush()

问题是输出在最后返回 \r\r\n 而不是像我预期的那样 \n 。我修改了代码以仅搜索字符串的一部分来验证测试。这是:

def wait_prompt(device, msg):
        device.write("\n\n")
        device.flush()
        output = device.readline()

        if msg in output:
                return 1
        return 0

def initialize_router(device):

        print ("Router connected on port " + port[0])

        while wait_prompt(device, "[yes/no]:") == 0:
                time.sleep(1)

        device.write("no\n")
        device.flush()

        while wait_prompt(device, "Line protocol on Interface Vlan1, changed state to up") == 0:
                time.sleep(1)

        time.sleep(2)
        device.write("\n")
        device.flush()