il y a un script qui attend l'entrée du clavier, je peux appeler ce script avec os.system (« ./ script ») en python,comment interagir avec un script externe (programme)
comment est-il possible renvoyer une entrée au script à partir d'un autre script appelant?
mise à jour:
le script est:
$ cat script
#!/usr/bin/python
for i in range(4):
name=raw_input('enter your name')
print 'Welcome %s :) ' % name
lorsque je tente sans boucle, cela fonctionne, mais il montre la sortie que lorsque le script se ferme.
>>> p = subprocess.Popen('./script',stdin=subprocess.PIPE)
>>> p.communicate('navras')
enter your nameWelcome navras :)
quand je l'essayer avec la boucle de Foor, il jette l'erreur, Comment afficher les déclarations interactif et lorsque le stdout est mis à jour avec de nouvelles déclarations d'impression
>>> p.communicate('megna')
enter your nameWelcome megna :)
enter your nameTraceback (most recent call last):
File "./script", line 3, in <module>
name=raw_input('enter your name')
EOFError: EOF when reading a line
(None, None)
Ces références devraient donner plus de détails: http://docs.python.org/library/subprocess.html http://jimmyg.org/blog/2009/working-with-python-subprocess.html Dans l'exemple ci-dessus, vous voulez probablement ajouter l'argument 'stdout = subprocess.PIPE'. La fonction de communication doit retourner un tuple '(stdout, stderr)' avec les données envoyées à chacun de ces descripteurs. Vous pouvez aussi essayer 'p.stdin.write()' et 'p.stdout.readline()'. Vraiment, vous pouvez traiter 'p.stdin' et' p.stdout' comme vous le feriez pour n'importe quel autre objet fichier :) –
quand je l'essaie avec la boucle foor, il jette une erreur, Comment afficher les instructions interactives au fur et à stdout est mis à jour avec de nouvelles instructions d'impression. >>> p.communicate ('Megna') entrez votre nameWelcome Megna :) entrez votre nameTraceback (appel le plus récent en dernier): Fichier "./script", ligne 3, en name = raw_input (» entrez votre nom ') EOFError: EOF lors de la lecture d'une ligne (Aucun, Aucun) –