es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PyInvoke: ¿cómo manejar stdin de una tarea?

El código debajo es puramente para propósitos ilustrativos. Quiero escribir una tarea como esta:

echo ’11da33′ | inv remove-number
da

¿Cómo puedo trabajar con stdin dentro de una tarea invocada? Revisé la documentación pero no encontré nada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para trabajar con stdin dentro de una tarea invocada, puedes utilizar la función run de la librería invoke. Aquí tienes un ejemplo de cómo puedes modificar la tarea para trabajar con stdin:

    from invoke import task, run
    
    @task
    def remove_number(ctx):
        input_str = sys.stdin.read().strip()
        output_str = ''.join([char for char in input_str if not char.isdigit()])
        print(output_str)
    

    En este ejemplo, utilizamos la función sys.stdin.read() para leer desde stdin y luego realizar el procesamiento deseado para eliminar cualquier número de la cadena de entrada. Finalmente, imprimimos la cadena procesada.

    Para usar esta tarea desde la línea de comandos, puedes enviar la cadena de entrada como un pipe de esta manera:

    $ echo '11da33' | invoke remove-number
    da
    

    Esto debería ejecutar la tarea remove_number con la entrada proporcionada desde la línea de comandos como stdin.

Comments are closed.