2010-07-26 7 views
5

Sto tentando di eseguire un'operazione di lunga durata ma il pexpect con l'argomento di timeout non sembra modificare il periodo di tempo prima che l'eccezione di timeout venga attivata. Ecco il mio codice:timeout pexpect non viene utilizzato, viene utilizzato solo il valore predefinito di 30

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'eccezione mostra che il timeout = 30, che è il default.

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 

risposta

9

E sembra funzionare se si specifica solo il timeout nella chiamata .spawn, non si può ignorare, o utilizzare timeout = 300 nella chiamata .expect da solo.

5

appena provato quanto segue e sembra funzionare:

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