Soy nuevo en python, habiendo usado Perl durante años. Una cosa típica que hago todo el tiempo es que perl abra un comando como una tubería y asigne su salida a una variable local para su procesamiento. En otras palabras:procesamiento de salida continua de un comando en python
"open CMD, "$command|";
$output=<CMD>;
a piece of cake. Creo que puedo hacer algo similar en python de esta manera:
args=[command, args...]
process=subprocess.Popen(args, stdout=subprocess.PIPE)
output=process.communicate()
hasta ahora todo bien. Ahora, para la gran pregunta ...
Si desactivo ese comando usando un ssh en múltiples plataformas, entonces puedo monitorear los descriptores en perl dentro de un ciclo de selección para procesar los resultados a medida que ingresan. Encontré el Python selecciona y encuesta los módulos, pero no estoy muy seguro de cómo usarlos. La documentación dice que la encuesta tomaría un control de archivo, pero cuando trato de pasar la variable 'proceso' anterior a poll.register() me sale un error que debe ser un int o tener un método fileno(). Desde Popen() utiliza la salida estándar, intenté llamar
poll.register(process.stdout)
y ya no genera un error, sino que simplemente se cuelga.
¿Alguna sugerencia/indicación de cómo hacer algo como esto?
proceso.stdout sería el manejador de archivo para ese objeto de proceso. No estoy seguro de si eso es todo lo que necesita para que funcione con poll/select, no los he usado. – AdamKG
Además, tenga en cuenta que Popen.communicate() bloquea hasta EOF; probablemente querrá deshacerse de eso. – AdamKG
ahh, lo entiendo. claramente NO quiero bloquear. muchos nuevos constructos para tratar de envolver mi cerebro. - marca –