В Python 3.3 +:
from subprocess import STDOUT, check_output
output = check_output(cmd, stderr=STDOUT, timeout=seconds)
output
представляет собой байтовую строку, содержащую объединенные stdout команды, данные stderr.
Этот код повышает значение CalledProcessError
при ненулевом статусе выхода, как указано в тексте вопроса, в отличие от метода proc.communicate()
.
Я удалил shell=True
, потому что он часто используется без необходимости. Вы всегда можете добавить его обратно, если cmd
действительно требует его. Если вы добавите shell=True
, то есть, если дочерний процесс порождает своих потомков; check_output()
может вернуться намного позже, чем указывает таймаут, см. Ошибка тайм-аута подпроцесса .
Функция тайм-аута доступна на Python 2.x через subprocess32
backport модуля подпроцесса 3.2+.
Хм ... Вполне логично, что для получения FontMetrics нужна графика. Высота, ширина шрифта и т. Д. Могут отличаться на разных дисплеях.
Если у вас есть компонент, вы можете использовать его для получения FontMetrics:
component.getFontMetrics(font);