это мертвые ссылки :(

проблема, которую я пытаюсь решить, заключается в следующем:

Мне нужно запустить программу с установленными флагами, проверить ее ход и доложить на сервер. Поэтому мне нужен мой сценарий, чтобы избежать блокировки во время выполнения программы, но мне также нужно иметь возможность прочитать вывод. К сожалению, я не думаю, что какой-либо из методов, доступных в Popen, будет читать вывод без блокировки. Я попробовал следующее, что немного хакерски (мы можем читать и записывать в один и тот же файл из двух разных объектов?)

import time
import subprocess
from subprocess import *
with open("stdout.txt", "wb") as outf:
    with open("stderr.txt", "wb") as errf:
        command = ['Path\\To\\Program.exe', 'para', 'met', 'ers']
        p = subprocess.Popen(command, stdout=outf, stderr=errf)
        isdone = False
        while not isdone :
            with open("stdout.txt", "rb") as readoutf: #this feels wrong
                for line in readoutf:
                    print(line)
            print("waiting...\\r\\n")
            if(p.poll() != None) :
                done = True
            time.sleep(1)
        output = p.communicate()[0]    
        print(output)

К сожалению, Попен, кажется, не пишет в мой файл, пока команда не завершится.

Кто-нибудь знает способ сделать это? Я не посвящен использованию Python, но мне нужно отправлять запросы POST на сервер в том же сценарии, поэтому Python казался более простым выбором, чем, скажем, сценарии оболочки.

Спасибо! Будет

Ответы на вопрос(0)

Ваш ответ на вопрос