gpt4 book ai didi

python - subprocess.call logger 信息和 stdout 和 stderr 的错误分别

转载 作者:太空狗 更新时间:2023-10-29 22:04:12 26 4
gpt4 key购买 nike

我有一个记录器。像这样:

import logging

logger = logging.getLogger('myApp')
hdlr = logging.FileHandler('myApp.log')
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)

我正在这样调用一个外部进程:

subprocess.call("someCommand")

我想从该进程中单独捕获 stdout 和 stderr,以便我可以相应地记录它们。例如

logger.info(<stdout>)
logger.error(<stderr>)

我看到了多种在一个流中捕获所有子流程的方法。但是,如果存在实际错误,我想将其记录下来。有没有办法做到这一点?

最佳答案

使用 subprocess.Popen() 并在返回的进程对象上调用 .communicate():

p = subprocess.Popen(["someCommand"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()

if stdout:
logger.info(stdout)
if stderr:
logger.error(stderr)

关于python - subprocess.call logger 信息和 stdout 和 stderr 的错误分别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18774476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com