Я пытался использовать subprocess.run , как описано в этом ответе , но он ничего не возвращает для stdout или stderr:
subprocess.run
>>> result = subprocess.run('echo foo', shell=True, check=True) >>> print(result.stdout); None >>> print(result.stderr); None
Я также пытался использовать capture_output=True, но получил исключение __init__() got an unexpected keyword argument 'capture_output', хотя оно описано в документации .
capture_output=True
__init__() got an unexpected keyword argument 'capture_output'
Я сделал ошибку, я не добавил stdout=subprocess.PIPE:
stdout=subprocess.PIPE
result = subprocess.run('echo foo', shell=True, check=True, stdout=subprocess.PIPE);
Теперь это работает.