python subprocess 设置输出编码
时间: 2023-10-05 08:12:59 浏览: 170
python运行环境编码设置
在使用 Python 的 subprocess 模块执行外部命令时,可以通过设置 Popen 构造函数的 `stdout` 和 `stderr` 参数来控制标准输出和标准错误输出的处理方式,例如:
```python
import subprocess
# 设置标准输出和标准错误输出都是 PIPE
p = subprocess.Popen(['cmd', '/c', 'chcp', '65001 && dir'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 读取标准输出和标准错误输出,并解码为 UTF-8 编码的字符串
stdout, stderr = p.communicate()
stdout = stdout.decode('utf-8')
stderr = stderr.decode('utf-8')
# 打印输出结果
print(stdout)
print(stderr)
```
在上面的示例中,我们使用 `Popen` 函数执行了一个命令 `cmd /c chcp 65001 && dir`,其中 `chcp 65001` 用于将控制台的输出编码设置为 UTF-8,`dir` 用于列出当前目录中的文件和子目录。我们通过设置 `stdout` 和 `stderr` 参数为 `subprocess.PIPE` 来捕获标准输出和标准错误输出,并在执行完命令后使用 `communicate` 函数读取输出结果,然后将输出结果解码为 UTF-8 编码的字符串。
如果外部命令的输出编码不是 UTF-8,可以根据实际情况将 `decode` 函数的参数改为对应的编码名称。
阅读全文