Подпроцесс Python.Открытый и асинхронный вывод

У меня есть простой скрипт Python для выполнения набора тестов как под Windows, так и под Linux. Каждый тест записывает свой результат в отдельный файл. Я использую subprocess.Popen для выполнения команды оболочки в цикле.

Каждая команда оболочки начинается так:

def system_execute(self, command, path, out_file):
    params_list = command.split(' ') 
    file_path = os.path.join(path, out_file)
    f = open(file_path, "w")
    subprocess.Popen(params_list, stdout=f)
    f.close()

Она работает нормально, но скрипт завершает свою работу до того, как будут записаны все выходные файлы. На самом деле, я получаю сотни файлов нулевого размера. файлы, и требуется некоторое время для завершения записи вывода и закрытия дескрипторов. Может ли кто-нибудь объяснить причину, по которой это работает так странно, и есть ли синхронный способ выполнить ту же работу?

Спасибо

8
задан Yuri S. Cherkasov 28 September 2011 в 10:41
поделиться