python中如何获得子进程的输出,并且记录到日志中(windows平台)

logging.config.fileConfig("example.conf")logger=logging.getLogger("expamle")p=subproc... logging.config.fileConfig("example.conf")
logger = logging.getLogger("expamle")
p = subprocess.Popen('ipconfig /all', stdout=subprocess.PIPE)
如何把ipconfig /all的输出写到日志中呢
展开
 我来答
tim_spac
2011-05-15 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2025万
展开全部
logging提供了一种特定格式的分级消息记录机制,而非简单数据记录文件。
恐怕不适合作为任务输出的直接记录
建议直接打开一个文件用于记录subprocess的输出
追问
我想得到输出,然后根据结果判断命令是否执行成功,比如,我执行PING时,从结果中得到网络是否通畅,其他的命令类似。以前,通过os.system,通过返回值判断,现在不希望通过这种方式执行,而是想通过subprocess,从subprocess的结果判断,但又不希望输出到控制台
追答
如果仅仅是记录下来供系统外分析:
handle = open(r'c:\1.txt','wt')
subprocess.Popen(['ipconfig','-all'], stdout=handle)

如果要在程序中提取信息进行逻辑处理:
output = subprocess.Popen(['ipconfig','-all'], stdout=subprocess.PIPE).communicate()[0]
output是输出内容可供分析处理。或用下面的代码,我试过的,没有弹出cmd窗口,可以得到输出内容。

# encoding: utf-8

import subprocess

p = subprocess.Popen(
['ipconfig','-all'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
shell = True,
)

(child_stdin, child_stdout) = (p.stdin, p.stdout)
print(''.join(child_stdout.readlines()))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式