从pexpect运行Scilab

时间:2011-10-01 06:30:26

标签: python pexpect scilab

我正在尝试使用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.在上面?

2 个答案:

答案 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)