subprocess.run详解
时间: 2023-11-25 14:39:00 浏览: 172
`subprocess.run()` 是 Python 的一个内置函数,用于在子进程中运行外部命令。
该函数的基本语法是:
```python
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, text=None, encoding=None, errors=None, env=None, universal_newlines=None)
```
参数说明:
- `args`:要执行的命令,可以是字符串或者字符串列表,如果是字符串,则会通过 shell 执行。
- `stdin`:子进程的标准输入,默认为 `None`。可以使用 `subprocess.PIPE` 来创建一个管道连接到子进程的标准输入。
- `input`:要传输给子进程的输入,默认为 `None`。可以是字符串或字节流。
- `stdout`:子进程的标准输出,默认为 `None`。可以使用 `subprocess.PIPE` 来创建一个管道连接到子进程的标准输出。
- `stderr`:子进程的标准错误,默认为 `None`。可以使用 `subprocess.PIPE` 来创建一个管道连接到子进程的标准错误。
- `capture_output`:如果设置为 `True`,则将子进程的标准输出和标准错误都捕获到返回值的 `stdout` 和 `stderr` 属性中,默认为 `False`。
- `shell`:如果设置为 `True`,则将命令通过 shell 执行,默认为 `False`。
- `cwd`:设置子进程的当前工作目录。
- `timeout`:设置子进程的超时时间,超过该时间子进程会被终止。
- `check`:如果设置为 `True`,则在子进程返回非零退出代码时会抛出 `CalledProcessError` 异常,默认为 `False`。
- `text`:如果设置为 `True`,则将子进程的输出解码为文本,默认为 `None`。
- `encoding`:设置解码子进程输出的编码格式。
- `errors`:设置解码子进程输出时的错误处理方式。
- `env`:设置子进程的环境变量。
- `universal_newlines`:如果设置为 `True`,则将子进程的输出解码为文本,并且换行符会被转换为 `\n`。
`subprocess.run()` 函数会返回一个 `CompletedProcess` 对象,其中包含了子进程的执行结果和输出信息。
注意:在使用 `subprocess.run()` 函数时,要注意输入的命令是否安全,以避免安全漏洞。应该避免将用户提供的输入直接传递给 `subprocess.run()` 函数,尤其是在使用 `shell=True` 的情况下。
阅读全文