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.

Realiza comprobaciones frecuentes en un archivo mientras se está escribiendo en él un subproceso

Tengo el siguiente fragmento de código donde el ejecutable de c++ (run.out) imprime una gran cantidad de información en tiempo de ejecución utilizando std::cout. Este código almacena las salidas de run.out en el archivo storage.txt.


storage = open("storage.txt", "w")
shell_cmd = "run.out"
proc = subprocess.Popen([shell_cmd], stdout=storage, stderr=storage)

Una vez que comienza el subprocess, necesito verificar con frecuencia el contenido de storage.txt y decidir en función de lo que acaba de almacenarse allí. ¿Cómo puedo hacer eso?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puedes leer el contenido de storage.txt utilizando la función open con el modo r, y luego puedes utilizar la función read() o readlines() para obtener el contenido del archivo. Aquí tienes un ejemplo de código:

    import time
    
    while True:
        with open("storage.txt", "r") as f:
            contenido = f.readlines()
            for linea in contenido:
                # hacer algo con cada línea
                print(linea)
    
        # esperar un tiempo antes de verificar nuevamente
        time.sleep(1)
    

    Este código lee el contenido del archivo storage.txt de forma continua y verifica cada línea del archivo una por una. Puedes adaptar el código dentro del bucle for según tus necesidades. La instrucción time.sleep(1) pausa la ejecución del código durante 1 segundo antes de verificar nuevamente. Puedes ajustar el tiempo de espera según sea necesario.

Comments are closed.