我正在尝试使用pexpect模块运行scilab,代码如下:
import pexpect
c=pexpect.spawn('scilab-adv-cli -nb')
c.expect('-->')
当我这样做时
c.sendline('plot[1,2]')
情节显示出来。但是当我做的时候
c.sendline('[1 2]*[3]')
c.expect('ans =')
接着是
c.before
它给了我以下输出:
' =\r\n \r\n 3. 6. \r\n \r\n\x1b[?1h\x1b=-->[1 2]*[3]\r\n\x1b[?1l\x1b> '
如何对上述输出进行消毒,以便仅获得3. 6.在上面?
答案 0 :(得分:1)
如果你想要阅读的所有输出都那么简单,那么你可以这样做:
largenum = 1000
# flush any remaining output
c.read_nonblocking(largenum)
c.sendline('[1 2]*[3]')
# discard unwanted lines until relevant line
for i in range(3): next(c)
# get answer (in this case, a single line)
ans = next(c).strip()
# discard rest of answer
c.read_nonblocking(largenum)
您可能知道,您高度依赖于scilab CLI输出数据的方式。
答案 1 :(得分:1)