python 运行cmd命令后logging无法输出
时间: 2023-09-05 07:03:51 浏览: 173
当使用Python运行cmd命令后,由于cmd命令本身的输出是直接输出到标准输出流(stdout)中,而不是通过标准错误流(stderr)输出,因此无法直接通过logging模块来输出。
为了解决这个问题,我们可以使用subprocess模块的Popen类来执行cmd命令,并通过重定向方式将标准输出流改为标准错误流,从而能够通过logging模块来输出。
下面是一个示例代码:
```python
import subprocess
import logging
# 配置logging模块
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# 执行cmd命令,并将标准输出重定向到标准错误流
process = subprocess.Popen('cmd命令', stderr=subprocess.PIPE, shell=True)
# 读取标准错误流的输出
output, error = process.communicate()
# 将错误日志输出到logging模块
logging.error(output.decode('utf-8'))
```
在这个示例代码中,我们首先通过subprocess模块的Popen类执行cmd命令,将标准输出流重定向到标准错误流,并使用stderr参数来保证标准错误流的输出被捕获。
然后,通过process.communicate()方法来获取标准错误流的输出,将其解码为字符串,并使用logging模块的error()方法将其输出为错误日志。
通过以上方式,我们可以在Python中执行cmd命令时,将输出信息通过logging模块来进行输出。
阅读全文