1

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

4

2 回答 2

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 输出数据的方式。

于 2011-10-01T22:10:03.387 回答
1

或尝试: http: //forge.scilab.org/index.php/p/sciscipy/

于 2011-10-02T15:57:53.617 回答