代码之家  ›  专栏  ›  技术社区  ›  0xtuytuy

Python比较字符串[已关闭]

  •  -1
  • 0xtuytuy  · 技术社区  · 11 年前

    我试图比较两个字符串,一个来自Pyserial,另一个是硬编码的消息。它们似乎完全相同,但出于某种原因,wait_prompt函数只返回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,但它似乎无法连续工作。

    溶液

    问题是输出在结尾返回,\r\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()
    
    1 回复  |  直到 11 年前
        1
  •  -1
  •   0xtuytuy    11 年前

    问题是输出在结尾返回,\r\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()