Вывод результатов команды времени оболочки при запуске программы со скриптом Python - PullRequest
3 голосов
/ 06 июля 2019

Я пытаюсь использовать python, чтобы запустить программу несколько раз и записать вывод в файл. Я выполняю этот простой код для тестирования, где clwb - это скомпилированный программный файл:

#!/usr/bin/env python3

from subprocess import time, call,DEVNULL,STDOUT,check_output,CalledProcessError
import shlex

with open("results/output.csv", 'w') as csvfile:

    command_to_execute="time ./clwb"
    call(shlex.split(command_to_execute),stdout=DEVNULL,stderr=STDOUT)
    result=check_output(shlex.split(command_to_execute), universal_newlines=True)
    csvfile.write(result+" \n") 

Я выполняю эту программу на python3 с помощью команды python3 в lunux. Однако в файле я получаю только выходные данные самой программы, но не результат команды time , которая при выполнении непосредственно из оболочки в конце вывода программы печатает что-то вроде это:

real    0m0.813s
user    0m1.140s
sys     0m0.056s

И этот результат является наиболее важным для меня, так как я пытаюсь оценить время выполнения самого процесса.

Я даже не начинающий в Python, и это единственный код, с которым я имел дело раньше, поэтому я понятия не имею, в чем может быть причина, почему я не вижу результат time Команда в файле, который, я полагаю, должен быть выполнимым, и особенно, как решить эту проблему.

ОБНОВЛЕНИЕ: решается путем изменения следующей строки

result=check_output(shlex.split(command_to_execute), stderr=STDOUT, universal_newlines=True) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...