["python","subprocess"]
subprocess: unexpected keyword argument capture_output

When executing subprocess.run() as given in the Python docs, I get a TypeError: >>> import subprocess >>> subprocess.run(["ls", "-l", "/dev/null"], capture_output=True) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.6/subprocess.py", line 403, in run with Popen(*popenargs, **kwargs) as process: TypeError: __init__() got an unexpected keyword argument 'capture_output' I am running Python 3.6.6: $ python3 --version Python 3.6.6
You inspected the wrong documentation, for python-3.6 this parameter does not exist, as can be found in the documentation (you select the version at the top left): subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, env=None) You can however easily "emulate" this by setting both stdout and stderr to PIPE: from subprocess import PIPE subprocess.run(["ls", "-l", "/dev/null"], stdout=PIPE, stderr=PIPE) In fact, if we look at the source code of the python-3.7 version, where the feature was introduced, we see in the source code [GitHub]: if capture_output: if ('stdout' in kwargs) or ('stderr' in kwargs): raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE