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

または試してみてください: http://forge.scilab.org/index.php/p/sciscipy/

于 2011-10-02T15:57:53.617 に答える
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 に答える