Почему subprocess.run () не показывает полный результат? - PullRequest
0 голосов
/ 10 февраля 2019

При выполнении команды time в bash (Ubuntu 18.04, python 3.6):

$ /usr/bin/time -f '%E' sleep 1
0:01.00

Возвращает время ожидания, как и ожидалось.Но с subprocess.run() возвращает пустое значение для той же команды:

>>> subprocess.run("/usr/bin/time -f '%E' sleep 1", stdout=subprocess.PIPE, shell = True)
0:01.00
CompletedProcess(args="/usr/bin/time -f '%E' sleep 1", returncode=0, stdout=b'')

Я не очень знаком с параметрами функции, и у меня возникают следующие вопросы:

Почему возврат изsubprocess.run() пусто?

Как правильно использовать subprocess.run() здесь?

1 Ответ

0 голосов
/ 10 февраля 2019

time печатает свои результаты со стандартной ошибкой, а не со стандартным выводом.

Здесь вам также не нужна или не нужна оболочка.

r = subprocess.run(["/usr/bin/time", "-f", "%E", "sleep", "1"],
    stdout=subprocess.PIPE, stderr=subprocess.PIPE,
    # We expect textual output
    universal_newlines=True,
    # Properly raise an error on failure
    check=True)
print(r.stderr)

Возможно, вам следует использовать синхронизацию PythonУслуги вместо этого, однако.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...