Я не могу понять, как использовать subprocess.run python для захвата stdout, stderr и кода выхода... и всего, что еще можно захватить. Мне также приходится использовать опцию тайм-аута, потому что некоторые из тысяч команд, которые я запускаю, зависают, т. е. выполняются бесконечно. Бьюсь об заклад, я пропустил что-то очевидное, и я извиняюсь. Я потратил дни на это и не могу понять это.
Любая помощь, которую вы могли бы мне дать, была бы очень признательна.
Вот мой дефектный код:
seconds = timeout
try:
proc = subprocess.run(cmd, capture_output=True, timeout=seconds)
except subprocess.TimeoutExpired:
print('This process ran too long:\n' + cmd + '\n')
out, err = proc.communicate()
exitcode = proc.returncode
if len(out) == 0: out="''"
if len(err) == 0: err="''"
#
return exitcode, out, err