如何为带有彩色tex的终端运行pexpect脚本

2024-06-01 19:21:18 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在交互会话中运行时,Pexpect工作得很好,但是如果它有彩色文本,那么它不仅匹配文本,它还与ansi颜色一起匹配文本。这方面的正则表达式非常复杂和庞大。有人能给我一些建议吗。在

例如:

而不是仅仅寻找:

"opendaylight-user@root"

它在寻找:

"or '\x1b[1mlogout\x1b[0m' to shutdown OpenDaylight.\r\r\n\r\n\x1b.\r\r\n
\r\n\x1b[36mopendaylight-user\x1b[0m\x1b[1m@\x1b[0m\x1b[34mroot\x1b[0m>".

这只是表达的一部分。在

import pexpect
import os
def ex1():
      os.chdir("opendaylight/distribution-karaf-0.3.4-Lithium-SR4/bin/")
      child=pexpect.spawn("./karaf clean",cwd="/home/ubuntu/opendaylight/distribution-karaf-0.3.4-Lithium-SR4/bin/") 
      child.expect("opendaylight-user@root>")
      print child.before
ex1()

错误

^{pr2}$

Tags: 文本importchildbinosrootdistributionpexpect
1条回答
网友
1楼 · 发布于 2024-06-01 19:21:18

我用expect_exact()而不是expect()得到了答案。expect()与正则表达式匹配,但expect_与字符串完全匹配。在

  import pexpect
  import os
  def ex1():
      os.chdir("opendaylight/distribution-karaf-0.3.4-Lithium-SR4/bin/")
      child=pexpect.spawn("./karaf clean",cwd="/home/ubuntu/opendaylight/distribution-karaf-0.3.4-Lithium-SR4/bin/") 
      child.expect_exact("\x1b[36mopendaylight-user\x1b[0m\x1b[1m@\x1b[0m\x1b[34mroot\x1b[0m>")
      print child.before
  ex1()

相关问题 更多 >