[pexpect] problemas al tratar de ejecutar un script

Milton Galo Patricio minoztro en gmail.com
Lun Dic 18 03:15:45 CET 2006


Hola lista:

 en un thread anterior me recomendaron pexpect y muchas gracias por
los consejos.....instale el modulo pexpect pero ahora tengo un
problema cuando echo a correr el siguiente codigo:

import pexpect
hijo=pexpect.spawn('pg_dump tpv -u -D -t tipo_operacion -Fc >
/home/minostro/Desktop/prueba.sql')
hijo.expect('Nombre de usuario: ')
hijo.sendline('minostro')
hijo.expect('Contraseña: ')
hijo.sendline('simple')
print hijo.before

el script rompe y me dice:

 python codigo_pexpect.py
Traceback (most recent call last):
 File "codigo_pexpect.py", line 7, in ?
   hijo.expect('Contraseña: ')
 File "/usr/lib/python2.4/site-packages/pexpect.py", line 1064, in expect
   return self.expect_list(compiled_pattern_list, timeout, searchwindowsize)
 File "/usr/lib/python2.4/site-packages/pexpect.py", line 1132, in expect_list
   raise EOF (str(e) + '\n' + str(self))
pexpect.EOF: End Of File (EOF) in read_nonblocking(). Exception style platform.
<pexpect.spawn object at 0xb7daa12c>
version: 2.1 ($Revision: 395 $)
command: /usr/bin/pg_dump
args: ['/usr/bin/pg_dump', 'tpv', '-u', '-D', '-t', 'tipo_operacion',
'-Fc', '>', '/home/minostro/Desktop/prueba.sql']
patterns:
   Contraseña:
buffer (last 100 chars):
before (last 100 chars):  en la línea de comandos (el primero es «>»)
Prueba «pg_dump --help» para más información.

after: pexpect.EOF
match: None
match_index: None
exitstatus: 1
flag_eof: True
pid: 12952
child_fd: 3
closed: False
timeout: 30
delimiter: pexpect.EOF
logfile: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.1
delayafterclose: 0.1
delayafterterminate: 0.1


 Se que el error es el caracter 'ñ', entonces se me ocurrio poner de
esta forma el script:


import pexpect
hijo=pexpect.spawn('pg_dump tpv -u -D -t tipo_operacion -Fc >
/home/minostro/Desktop/prueba.sql')
hijo.expect('Nombre de usuario: ')
hijo.sendline('minostro')
hijo.expect('.*: ')
hijo.sendline('simple')
print hijo.before

para solucionar el problema de la 'ñ' puse una expresión regular, pero
aún así me imprime un espacio en blanco y no me genera el archivo
prueba.sql...me pueden seguir ayudando por favor, gracias


-- 
Milton Inostroza Aguilera




Más información sobre la lista de distribución Python-es