Python pexpect

Fermé
yama - 24 juil. 2012 à 11:14
aloka Messages postés 4 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 26 juillet 2012 - 24 juil. 2012 à 13:59
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 mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
24 juil. 2012 à 13:15
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 mardi 24 juillet 2012 Statut Membre Dernière intervention 26 juillet 2012
24 juil. 2012 à 13:24
oui exactement, "(gdb) " est l'expression que expect attend
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
24 juil. 2012 à 13:46
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 mardi 24 juillet 2012 Statut Membre Dernière intervention 26 juillet 2012
24 juil. 2012 à 13:51
si expect détecte "(gdb) " il faut qu'elle affiche "c" (child.sendline('c') )
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
24 juil. 2012 à 13:57
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 mardi 24 juillet 2012 Statut Membre Dernière intervention 26 juillet 2012
24 juil. 2012 à 13:59
"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