subprocess.run()不返回stdout或stderr

sas*_*alm 6 python python-3.x python-3.6

我尝试使用subprocess.run 此答案中描述的,但它不会返回stdout或stderr的任何内容:

>>> result = subprocess.run('echo foo', shell=True, check=True)
>>> print(result.stdout);
None
>>> print(result.stderr);
None
Run Code Online (Sandbox Code Playgroud)

我也试过使用capture_output=True但是我得到了一个例外__init__() got an unexpected keyword argument 'capture_output',即使它在文档中有描述.

sas*_*alm 6

我犯了一个错误,我没有补充stdout=subprocess.PIPE:

result = subprocess.run('echo foo', shell=True, check=True, stdout=subprocess.PIPE);
Run Code Online (Sandbox Code Playgroud)

现在它正在运作.

  • subprocess.run的capture_output关键字参数仅在python 3.7之后可用.您可能正在使用早期版本.无论如何,capture_output相当于将stdout和strerr都设置为subprocess.PIPE (5认同)