Estoy en Windows XP. Esto parece afectar cualquier proceso, pero usaré Python3.2 para demostrarlo. Una secuencia de comandos, 'filter.py':entrada estándar no se encuentra para cualquier tubería de proceso I en la que utiliza Windows y ftype mecanismo Assoc para seleccionar el ejecutable correcto
import sys
for line in sys.stdin:
print(line)
Ejecución de esta manera:
echo hello | filter.py
saltos como este:
Traceback (most recent call last):
File "F:\Documents and Settings\jhartley\docs\projects\filtercwd\filter.py", line 3, in <module>
for line in sys.stdin:
TypeError: 'NoneType' object is not iterable
Efectivamente, la adición de una impresión a descubrir el valor de sys.stdin informa que es Ninguno (y de NoneType.)
O bien, ejecute esto de la siguiente manera:
echo hello | python filter.py
(con una invocación explícita de python) funciona perfectamente bien.
Mis archivos .py están conectados a ejecutar utilizando Python usando la asoc y el mecanismo ftype (la forma en que Windows asocia extensiones de archivos particulares para ser ejecutados mediante programas particulares):
> assoc .py
.py=Python.File
> ftype Python.File
Python.File="F:\Python32\python.exe" "%1" %*
(esto es lo mismo ' python.exe 'que es lo más importante en mi camino)
Actualización: Esto no es una cosa de Python. Lo mismo sucede si creo filter.sh, corro usando cygwin bash. Explícitamente ejecutando 'echo hello | bash filter.sh 'funciona bien, pero' echo hola | filter.sh 'que ejecuta filter.sh usando bash a través de los mecanismos assoc y ftype, falla con'/dev/stdin: No hay tal archivo o directorio '.
Así que tengo que añadir este 'pitón' explícita a todos mis líneas de comando? Además, tengo curiosidad sobre por qué se está rompiendo. ¿Es solo alguna peculiaridad de mi máquina, o lo ven otras personas también?
Hey. Gracias por la respuesta. Tengo todos los binarios cygwin más importantes en mi PATH, incluido echo. Tal vez es algo de Windows XP. Es curioso que no lo haya notado antes. Lo intentaré en otros sabores de Windows e informaré. –
¡Oh! Y, ¿puedo pedirle que muestre su configuración de ftype y aso que asocia archivos .rb con ruby? Tal vez configuré el mío de una manera loca. es decir, cuál es el resultado de "assoc .rb" y "ftype X", donde X es el resultado del comando assoc. ¡Gracias! –
Actualicé por respuesta para incluir esa información. Hice mis experimentos en el Microsoft Command Prompt normal. ¿Qué shell estás usando? –