2009-06-29 7 views
2

Duplicate of this question. Votez pour fermer.Mauvais filedescripteur lors de la lecture de stdin en python

Considérez cela à la ligne de commande de Windows.

scriptA.py | scriptB.py 

En scriptA.py:

sys.stdout.write("hello") 

En scriptB.py:

print sys.stdin.read() 

Cela génère l'erreur suivante:

c:\> scriptA.py | scriptB.py 
close failed: [Errno 22] Invalid argument 
Traceback (most recent call last): 
    File "c:\scriptB.py", line 20, in <module> 
    print sys.stdin.read() 
IOError: [Errno 9] Bad file descriptor 

Le "close Failed" semble provenir de l'exécution de scriptA.py.

Peu importe si j'utilise sys.stdin.read(), sys.stdin.read (1), (sys.stdin.readlines) etc etc

Qu'est-ce qui ne va pas?

Duplicata de this question. Votez pour fermer.

+0

Je viens de l'essayer avec python a.py | python b.py, qui fonctionne bien. Voir la réponse de Johan pour la raison. – balpha

Répondre

7

Il semble que la redirection stdin/stdout ne fonctionne pas lors du démarrage d'une association de fichiers. Ce n'est pas spécifique à python, mais un problème causé par win32 cmd.exe.

Voir: http://mail.python.org/pipermail/python-bugs-list/2004-August/024920.html

+1

S'il vous plaît envisager d'éditer votre réponse afin qu'il indique que le problème est dans Windows CMD.EXE, pas en Python. –

+0

Je ne sais pas si ce problème est vraiment spécifique à Windows, comme je viens de rencontrer quelque chose de similaire sur Linux - voir mon entrée [Linux: Pipe dans Python (ncurses) script, stdin et termios - Stack Overflow] (http://stackoverflow.com/ questions/3999114/linux-pipe-en-python-ncurses-script-stdin-et-termios) – sdaau

+0

Merci beaucoup! Je pensais que j'allais devenir fou – Konrads

Questions connexes