2010-07-26 6 views
5

Ich versuche eine langwierige Operation durchzuführen, aber Pexpect mit dem Timeout-Argument scheint nicht die Zeitdauer zu ändern, bevor die Timeout-Ausnahme ausgelöst wird. Hier ist mein Code:Pexpect Timeout wird nicht verwendet, nur die Standardeinstellung von 30 wird verwendet

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) 

Die Ausnahme zeigt, dass das Timeout = 30, die Standardeinstellung ist.

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 

Antwort

9

Es scheint zu funktionieren, wenn Sie den Timeout in dem .spawn Anruf angeben, können Sie nicht überschreiben oder selbst timeout = 300 im .expect Aufruf verwenden.

5

versucht, einfach die folgenden und es scheint zu funktionieren:

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