Использование subroutine.check_output для получения вывода traceroute

Я пытаюсь получить вывод traceroute с помощью subroutine.check_output, но всегда есть строка «traceroute to twitter.com (104.244.42.193), макс. 64 перехода, пакеты по 52 байта», которая печатается в терминале, исключена из вывод в моем скрипте. Есть ли способ обойти это, все еще используя subroutine.check_output?


person Cindy Montana    schedule 04.11.2016    source источник
comment
У вас тоже есть свой код?   -  person Fallenreaper    schedule 04.11.2016


Ответы (1)


Это потому, что эта строка печатается в стандартном потоке ошибок.

Чтобы объединить stdout и stderr:

p = subprocess.check_output(command,stderr=subprocess.STDOUT)

выдержка из help(subprocess.check_output)

Чтобы зафиксировать стандартную ошибку в результате, используйте stderr=STDOUT.

>>> check_output(["/bin/sh", "-c",
...               "ls -l non_existent_file ; exit 0"],
...              stderr=STDOUT)
b'ls: non_existent_file: No such file or directory\n'
person Jean-François Fabre    schedule 04.11.2016