subprocess.call 分别记录 stdout 和 stderr 的信息和错误

2024-04-06

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

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>)

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


Use 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

subprocess.call 分别记录 stdout 和 stderr 的信息和错误 的相关文章

随机推荐

  • 导入错误:您必须是 root

    我尝试在 python 3 中使用键盘库 但仍然出现导入错误 我在 Thonny 的 Windows 中运行了该程序 它工作正常 但我无法在 pi 中运行它 我尝试以 root 身份运行它并使用 sudo 命令运行它 得到相同的结果 下面是
  • nhibernate 交替批量大小

    当使用 NHibernate 执行查询时 如果批处理大小设置为大于实际返回的结果 则似乎不考虑批处理大小 我正在使用最新版本的 NHibernate 2 1 0 4000 和 Linq to NHibernate 的 GA 我有一个类似于
  • 为什么在使用 Microsoft.Bcl - 无法等待'System.Threading.Tasks.Task 时,我不能在 Windows Phone 7.1 MvvmCross 项目中使用 wait 关键字?

    使用 Microsoft Bcl Microsoft BCL Portability Pack 时 我无法在 MvvmCross Windows Phone 7 1 项目中使用 wait 关键字 我已经发布了下面描述的示例项目的代码GitH
  • 只有创建视图层次结构的原始线程才能触摸其视图错误

    一切正常 除非到达代码的最后部分 注册成功 然后标题中提到的错误出现在registerDialog消息部分中 我做错了什么吗 谁能帮我检查我的代码 非常感谢 该应用程序没有崩溃 尽管它只是退出回到应用程序主页 如果我再次按下注册按钮 它将返
  • 如何根据周对 pandas 数据框进行分区并保存为 CSV?

    我有一个熊猫数据框 如下所示 这个数据框大约一个月的时间段 如何根据周对该数据框进行分区 我需要每 4 周保存为 4 个单独的 CSV 文件 Time Stamp Id Latitude Longitude 01 10 2016 15 22
  • 使用 AngularJS ngTable 自定义过滤器

    我正在尝试使用 ngTable 构建一个表 但使用与中描述的不同的自定义过滤ngTable 页面的示例 http bazalt cms com ng table example 11 我希望进行适当的过滤 但我不希望 ngTable 呈现过
  • Cypress:在第一次失败时中断所有测试

    如何在第一次测试失败时中断所有赛普拉斯测试 我们使用信号量为每个 PR 与 Cypress 启动完整的 e2e 测试 但这需要太多时间 我想在第一次测试失败时中断所有测试 获取完整的错误是每个开发人员在开发时的职责 如果在部署之前出现任何问
  • 如何使用grep提取子字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 从字符串中提取正则表达式结果并将其写入变量 https stackoverflow com questions 3148558 extract regexp result from string an
  • 生成字符串列表的所有组合

    我想生成一个字符串列表的所有可能组合的列表 它实际上是一个对象列表 但为了简单起见 我们将使用字符串 我需要这个列表 以便我可以在单元测试中测试每种可能的组合 例如 如果我有一个列表 var allValues new List
  • 在 C# 中使用派生返回类型覆盖抽象属性

    我有四节课 请求 派生请求 处理程序 派生处理程序 Handler 类有一个带有以下声明的属性 public abstract Request request get set DerivedHandler 需要重写此属性 以便它返回 Der
  • 不了解类 UNET 架构中的数据流,并且 Conv2DTranspose 层的输出存在问题

    我对修改后的 U Net 架构的输入维度有一两个问题 为了节省您的时间并更好地理解 重现我的结果 我将发布代码和输出尺寸 修改后的U Net架构是来自的MultiResUNet架构https github com nibtehaz Mult
  • MKMapView 崩溃

    我无法确定崩溃的具体时间 因为有时会发生 但大多数时候不会 当添加新注释并且图钉下降时 或者当图钉位置发生更改 拖动 时 它会崩溃 我的ios版本是4 3 1 Crash Thread 0 Crashed 0 libobjc A dylib
  • asp.net在gridview中查找控件

    如何使用查找控件访问Label4 感谢您的任何帮助 您可以提供
  • 如何在共享主机上托管 codeigniter 4 网站? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我刚刚创建了一个 codeigniter4 项目 我想将其上传到 sharehosting 上 但我的网站无法访问 它给出了服务器错误 出
  • 如何在 C# Windows 应用程序中引用网站用户控件?

    我在 Windows C 应用程序中有一个解决方案 其中我也有一个网站 在网站中我有 1 个用户控件 现在我希望在同一解决方案的其他 C 项目中使用用户控件 怎么做 那是不可能的 您必须为 Windows 应用程序重新创建它 您可以重用的是
  • Angular 2:路由参数更改,重新加载同一页面?

    我有一个带有参数的路由 当转到页面 users 123 时 其中 123 是调用 ngOnInit 的参数 我获取我的参数并调用我的方法来获取用户 但是 当我在该页面上单击第二个链接 users 456 时 将不再调用 ngOnInit 因
  • 如何使用Struts2 Jquery插件实现过滤器搜索

    我正在尝试为我的 Struts2 jquery 网格实现过滤器搜索 如果我搜索任何字符串 通过 jquery 过滤器文本框 那么它会调用我的操作类 但我无法在我的操作类中获取搜索字符串 我尝试在我的 Action 类中打印此行 但搜索字符串
  • 使用 scikit-learn 运行 k-fold 后如何访问数据集?

    我正在尝试应用 kfold 方法 但我不知道如何访问生成的训练和测试集 在浏览了几个博客和 scikitlearn 用户指南后 人们唯一要做的就是打印训练和测试集 这可能适用于小型数据框 但对于较大的数据框则没有用 谁能帮我 我正在使用的数
  • getNodeValue() 返回 null,尽管响应 xml 持有者不返回 null

    我正在使用 SOAP UI GetCityWeatherByZip 的演示 Web 服务 该脚本从 csv 文件中读取不同的邮政编码 将它们传递到请求 xml 中 获取响应并将结果存储在 csv 文件中 ulresp 变量用于存储响应 并且
  • subprocess.call 分别记录 stdout 和 stderr 的信息和错误

    我有一个记录器 像这样的东西 import logging logger logging getLogger myApp hdlr logging FileHandler myApp log logger addHandler hdlr l