2013-04-03 6 views
0

J'ai un script Python nommé age.pymise en œuvre ExpectJ sur Python Script

#!/usr/bin/env python 
#file: age.py 

age = raw_input("Enter your age: ") 
print "Your age in dog years is", float(age)/7 

et je suis en utilisant la bibliothèque Expectj, c'est l'extrait de code java que j'utilise

ExpectJ exp = new ExpectJ(); 
Spawn s = null; 
try { 
    s = exp.spawn(test1);  
    s.expect("Enter your age: "); 
    System.out.println("Current status: "+s.getCurrentStandardOutContents()); 
    s.send("y\n"); 
} catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     System.out.println("ioe\n"); 
} catch (TimeoutException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     System.out.println("toe\n"); 
} finally { 
     if (s != null) 
     s.stop();   
} 

C'est pas attraper le message sysout "Enter your age: " et par conséquent le script passe dans un état d'attente infinie. Quelle est la solution requise pour que ExpectJ fonctionne avec le script python?

Répondre

0

Je ne suis pas familier avec ExpectJ, mais j'imagine qu'il attend une ligne terminée par une nouvelle ligne, que raw_input ne produit pas. De l'raw_input documentation:

Si l'argument rapide est présent, il est écrit sur la sortie standard sans retour à la ligne de fuite.

+0

Je n'ai pas mis de nouvelle ligne dans le match –