2011-10-01 10 views
1

Je suis en train de courir à l'aide du module Scilab pexpect avec le code suivant:Exécution de Scilab pexpect

   import pexpect 
       c=pexpect.spawn('scilab-adv-cli -nb') 
       c.expect('-->') 

Quand je

   c.sendline('plot[1,2]') 

l'intrigue apparaît. Mais quand je fais

   c.sendline('[1 2]*[3]') 
       c.expect('ans =') 

suivie

   c.before 

il me donne les éléments suivants eteint:

  ' =\r\n \r\n 3. 6. \r\n \r\n\x1b[?1h\x1b=-->[1 2]*[3]\r\n\x1b[?1l\x1b> ' 

Comment la sortie ci-dessus peut être désinfecté pour obtenir seulement dire 3. 6. Au dessus ?

Répondre

1

Si toutes les sorties que vous voulez lire est aussi simple que cela, vous pouvez le faire:

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) 

Vous le savez sans doute, vous êtes dépendant fortement de la façon dont les données sorties CLI Scilab.