2010-07-26 11 views
5

J'essaye de faire une longue opération mais pexpect avec l'argument timeout ne semble pas changer la durée avant que l'exception de timeout ne soit déclenchée. Voici mon code:pexpect timeout n'est pas utilisé, seule la valeur par défaut de 30 est utilisée

child = pexpect.spawn('scp file [email protected]:/temp', timeout=300) 

whichMatched = child.expect(['(?i)Password','Are you sure you want to continue connecting (yes/no)?'], timeout=300) 

L'exception indique que le délai d'expiration = 30, qui est la valeur par défaut.

after: <class 'pexpect.TIMEOUT'> 
match: None 
match_index: None 
exitstatus: None 
flag_eof: False 
pid: 6222 
child_fd: 4 
closed: False 
timeout: 30 
delimiter: <class 'pexpect.EOF'> 
logfile: None 
logfile_read: None 
logfile_send: None 
maxread: 2000 
ignorecase: False 
searchwindowsize: None 
delaybeforesend: 0.05 
delayafterclose: 0.1 
delayafterterminate: 0.1 

Répondre

9

Il semble fonctionner si vous ne spécifiez le délai d'attente dans l'appel .spawn, vous ne pouvez pas passer outre, ou utiliser timeout = 300 dans l'appel .expect par lui-même.

5

Juste essayé ce qui suit et il semble fonctionner:

child.timeout = 300
child.expect ("...")

Questions connexes