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()
我正在尝试比较 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()