Python pexpect

Bonjour,
voici mon code:
*************************************************
#!/usr/bin/python2.6

import os
import pexpect

os.chdir("/home/sst/stage/3.9.0/ref/HAL3/projects/M88_7105")
os.system('tcsh -c "source setenv_local_hal3_drivers_32bits; make total ; make install; make run"')
child = pexpect.spawn ('make run')
child.expect('(gdb) ')
child.sendline ('c')
**************************************************

en fait, aprés l'éxécution des commandes (os.system('tcsh -c "source setenv_local_hal3_drivers_32bits; make total ; make install; make run"') il apparaît "(gdb) " à ce niveau là il faut afficher "c\n" mais en exécutant le script, à l'apparition de "(gdb) " rien ne se passe.
je suis nouvelle en python et j'attends votre aide!
merci,

1 réponse

  1. Bonjour

    Je ne connais pas pexpect, j'ai lu la doc

    Qu'est ce que tu veux dire par : il apparaît "(gdb) " ??
    Que (gdb) est affiché à l'écran ?
    D'après ce que j'ai compris en lisant les docs, la fonction expect() n'affiche pas, elle attend.
    Je ne comprend pas ce que tu écris.
    1. oui exactement, "(gdb) " est l'expression que expect attend
    2. Et d'après ce que j'ai compris, quand expect() détecte ce qu'on lui a dit d'attendre, le programme passe à la ligne suivante.

      Si ce qui était attendu est un objet unique (une chaîne, une regex, d'autres trucs), on peut n'écrire que expect(quelquechose), le passage à la ligne suivante suffit.

      Mais on peut aussi ordonner à expect() d'attendre une liste, et dans ce cas, il faut écrire i = expect(quelquechose) et après la ligne expect on place un code avec conditions:
      if i==0:
          ....
      if i==1:
          ....
      etc


      C'est ça ?
    3. si expect détecte "(gdb) " il faut qu'elle affiche "c" (child.sendline('c') )
    4. Mon précédent post était une question générale, pas liée au code de yama

      Pour ce qui est de son code, je comprends qu'après détection de "(gdb) " , il doit y avoir affichage de la lettre c à l'écran avec retour du curseur à la ligne suivante.
      Mais "elle affiche"c" ", c'est quoi le 'elle' dans cette phrase ?
    5. "Pour ce qui est de son code, je comprends qu'après détection de "(gdb) " , il doit y avoir affichage de la lettre c à l'écran avec retour du curseur à la ligne suivante. " c'est exactement ça ;)