2011-10-01 49 views
1

我想SCILAB使用Pexpect的模塊用下面的代碼運行運行的Scilab:從Pexpect的

   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。在上面?

回答

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輸出數據。