Je l'ai testé sur mon ordinateur Windows et il fonctionne si vous spécifiez l'exe Python:
C:\>C:\Python25\python.exe output.py | C:\Python25\python.exe input.py
Give me the greeting. The greeting is: hello
Mais je reçois également une erreur EOFError si j'exécute directement les commandes:
output.py | input.py
Je ne sais pas exactement pourquoi c'est, je suis toujours en train de regarder dans celui-ci, mais au moins cela devrait vous fournir une solution de contournement pour le moment. Cela peut avoir quelque chose à voir avec la manière dont le gestionnaire de fichiers est appelé pour les fichiers .py.
MISE À JOUR: bien, que savez-vous? On dirait que c'est en fait un bogue dans Windows où la redirection stdin/stdout peut ne pas fonctionner correctement lorsqu'elle est démarrée à partir d'une association de fichiers. Donc, la solution de contournement est telle que notée par moi-même et Patrick, vous devez spécifier "python" exécutera input.py, sinon il ne redirigera pas stdout de output.py vers stdin pour input.py correctement.
Référence:
http://mail.python.org/pipermail/python-bugs-list/2004-August/024923.html
http://support.microsoft.com/default.aspx?kbid=321788
MISE À JOUR 2:
Pour changer ce comportement et faire des pipes de Windows fonctionnent comme prévu pour stdin/stdout redirection, vous pouvez ajouter cette valeur au registre (testé sur ma boîte et vérifié que cela fonctionne comme vous le souhaitez).
- Démarrez l'Éditeur du Registre.
Recherchez et cliquez sur la clé suivante dans le Registre:
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer
Dans le menu Edition, cliquez sur Ajouter une valeur, puis ajoutez la valeur de registre suivante:
nom de la valeur: InheritConsoleHandles
Type de données: RE G_DWORD
Radix: décimal
Données de la valeur: 1
Quit l'Éditeur du Registre.
Cela fonctionne dans Python 3.0. –
C'est-à-dire que j'ai utilisé l'entrée (..) au lieu de raw_input (..) –
J'ai mis à jour ma réponse pour expliquer pourquoi la solution proposée par Patrick et moi fonctionne et non l'original. – Jay