Python pexpect

yama -  
aloka Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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

heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
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.
0
aloka Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
oui exactement, "(gdb) " est l'expression que expect attend
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
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 ?
0
aloka Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
si expect détecte "(gdb) " il faut qu'elle affiche "c" (child.sendline('c') )
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
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 ?
0
aloka Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
"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 ;)
0