进程运行时不断打印子进程输出

2023-12-07

要从 Python 脚本启动程序,我使用以下方法:

def execute(command):
    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    output = process.communicate()[0]
    exitCode = process.returncode

    if (exitCode == 0):
        return output
    else:
        raise ProcessException(command, exitCode, output)

所以当我启动一个像这样的进程时Process.execute("mvn clean install"),我的程序会等到该过程完成,然后我才能获得程序的完整输出。如果我正在运行一个需要一段时间才能完成的进程,这很烦人。

我可以让我的程序通过在循环或其他方式完成之前轮询进程输出来逐行写入进程输出吗?

I found this可能相关的文章。


您可以使用iter命令输出后立即处理行:lines = iter(fd.readline, "")。这是一个显示典型用例的完整示例(感谢@jfs 的帮助):

from __future__ import print_function # Only Python 2.x
import subprocess

def execute(cmd):
    popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
    for stdout_line in iter(popen.stdout.readline, ""):
        yield stdout_line 
    popen.stdout.close()
    return_code = popen.wait()
    if return_code:
        raise subprocess.CalledProcessError(return_code, cmd)

# Example
for path in execute(["locate", "a"]):
    print(path, end="")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程运行时不断打印子进程输出 的相关文章

  • Python包不安装子模块

    我在 dev 分支中创建了一个具有以下结构的包 在验证包安装正确之前不会合并到 main mypackage init py setup py requirements txt module py subpackage one init p
  • ValueError:“连接”层需要具有匹配形状的输入(连接轴除外)

    我正在尝试为我的项目构建 Pix2Pix 并收到错误 值错误 Concatenate层需要具有匹配形状的输入 除了连接轴之外 获得输入形状 None 64 64 128 None 63 63 128 生成器是一个 U 网模型 我的输入高度
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 将打开关闭的 Google Chrome 浏览器添加到 Selenium linkedin_scraper 代码中

    我正在尝试抓取一些知名人士的 LinkedIn 个人资料 该代码获取一堆 LinkedIn 个人资料 URL 然后使用Selenium and scrape linkedin收集信息并将其作为 json 文件保存到文件夹中 我遇到的问题是
  • 如何在 Django 管理中以表格格式显示添加模型?

    我刚刚开始使用 Django 编写我的第一个应用程序 为我的家庭设计的家务图表管理器 在本教程中 它向您展示了如何添加相关对象 http docs djangoproject com en dev intro tutorial02 cust
  • Django 如何从 ManyToManyField 序列化并列出全部

    我正在使用 Django 1 9 1 开发移动应用程序后端 我实现了关注者模型 现在我想列出用户的所有关注者 但目前我不得不这样做 我还使用 Django Rest 框架 这是我的 UserProfile 模型 class UserProf
  • 使用 Python 的文本中的词频但忽略停用词

    这给了我文本中单词的频率 fullWords re findall r w allText d defaultdict int for word in fullWords d word 1 finalFreq sorted d iterit
  • Selenium Webdriver - Python - leboncoin - pb 选择带重音的按钮

    我正在尝试在以下网站上自动填写表格 https www leboncoin fr https www leboncoin fr 我用 Selenium IDE 录制了一个脚本 我有一个通过单击 Se 连接器 按钮并填写我的密码和用户名来自动
  • Pandas Pivot_Table :非数字值的行计算百分比

    这是我在数据框 df 中的数据 Document Name Time SPS2315511 A 1 HOUR SPS2315512 B 1 2 HOUR SPS2315513 C 2 3 HOUR SPS2315514 C 1 HOUR S
  • 在函数调用之间保存数据的Pythonic方式是什么?

    对我来说 上下文是我需要在调用修改该值的函数之间保留的单个 int 的信息 我可以使用全局 但我知道这是不鼓励的 现在 我使用了包含 int 的列表形式的默认参数 并利用了可变性 以便在调用之间保留对值的更改 如下所示 def increm
  • 向 Python 2.6 添加 SSL 支持

    我尝试使用sslPython 2 6 中的模块 但我被告知它不可用 安装OpenSSL后 我重新编译2 6 但问题仍然存在 有什么建议么 您安装了 OpenSSL 开发库吗 我必须安装openssl devel例如 在 CentOS 上 在
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 为 Python 2.4 改进“with”语句的直接替换

    您能否建议一种方法来编写可在 Python 2 4 中使用的 with 语句的直接替换代码 这将是一个 hack 但它可以让我更好地将我的项目移植到 Python 2 4 EDIT 删除了不相关的元类草图 只需使用 try finally
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • PyQt - 如何检查 QDialog 是否可见?

    我有个问题 我有这个代码 balls Ball for i in range 1 10 因此 当我说 Ball 时 这将在 QDialog 上绘制一个球 然后当这完成后 我正在移动球QDialog无限循环中 我想说类似的话while QDi
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 从 Python 中编译的正则表达式中提取命名组正则表达式模式

    我有一个 Python 正则表达式 其中包含多个命名组 但是 如果先前的组已匹配 则可能会错过与一组匹配的模式 因为似乎不允许重叠 举个例子 import re myText sgasgAAAaoasgosaegnsBBBausgisego
  • 使 matplotlib 图形默认看起来像 R?

    Is there a way to make matplotlib behave identically to R or almost like R in terms of plotting defaults For example R t
  • 如何动态创建 Luigi 任务

    我正在为 Luigi Tasks 构建一个包装器 但遇到了一个障碍Register http luigi readthedocs io en stable modules luigi task register html Register该
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见

随机推荐

  • 从头开始制作Android聊天应用程序

    我需要为Android 制作聊天应用程序 我想到使用PHP脚本来实现聊天应用程序 基本思想是将消息从android客户端发送到PHP脚本 并利用PHP脚本将消息发送到MySQL数据库 这些消息将广播给其他人 但问题是自动向其他人广播消息 有
  • 从列表列表中删除重复项

    我有一个Python列表列表 k 1 2 4 5 6 2 1 2 3 4 我想从中删除重复的元素 如果它是一个普通列表而不是我可以使用的列表set 但不幸的是 该列表不可散列 并且无法创建列表集 仅元组 所以我可以将所有列表转换为元组 然后
  • 如何创建文件下载按钮? 和 Axios 不工作

    我试图在我的个人网站上创建一个下载按钮 供人们下载我的 docx 简历 但遇到了一些问题 首先我用简单的 href 链接来做到这一点 a href xxx docx a
  • Jquery对话框按钮返回值

    我正在使用jquery对话框 我想要实现的是当用户按 确定 时 编程继续进行 当按 取消 时 它停止 function displaymessage confirm dialog buttons OK function this dialo
  • C# 中同步线程访问和写入

    我有一个用 C 编写的多线程端口扫描仪应用程序 我想在应用程序运行时将一些内容打印到控制台和日志文件 因此 我有以下帮助程序类 它可以很好地写入日志文件和控制台 public class Output private const strin
  • R data.table - 将函数 A 应用于某些列,将函数 B 应用于其他一些列

    我想聚合数据表的行 但聚合函数取决于列的名称 例如 如果列名称是 variable1 or variable2 然后应用mean 功能 variable3 然后应用max 功能 variable4 然后应用sd 功能 我的数据表总是有一个d
  • 带按钮的 Html 两种语言选项(无需重定向到不同页面)

    我正在尝试为网站提供第二语言选项 以下是该项目的详细信息 1 我并没有尝试使用谷歌翻译系统或任何其他自动翻译服务来更改整个网站语言 2 我只是想翻译网站中的主要描述部分 3 我已经编写并保存了描述文本的翻译版本 4 我还在一个单独的文件中制
  • 如何正确观察非标准事件?

    我是反应式扩展的新手 正在处理一个具有如下定义事件的 COM 库 public delegate void MyDelegate int requestId double price int amount public event MyDe
  • OSError:安装 h2o 时版本不匹配?

    我是 H2o 新手 总部设在文档我为 python 安装了 H2o pip install h2o Then In import h2o h2o init Out OSError Traceback most recent call las
  • 如何将无符号整数加载到 SIMD 中

    我有一个 C 程序 其中有一些无符号整数数组 我正在使用这个声明uint32 t 我想使用 SIMD 对每个数组中存储的数据执行一些操作 这就是我陷入困境的地方 因为看起来大多数 SSE 和 SSE2 函数只支持 float 和 doubl
  • 如何从动态范围中分割文本?

    我从 ERP 系统下载了一个很长的数据集 他们是管子 划定的 我必须将其拆分为单独的列 我可以用FILTERXML or TEXTSPLIT 将它们拆分为列 我试图动态使用 Textsplit 函数 以便如果有任何新数据到达末尾行 它会自动
  • Swift 的 Guard 关键字

    Swift 2 引入了guard关键字 可用于确保各种数据已配置就绪 我看到的一个例子这个网站演示了一个submitTapped函数 func submitTapped guard username text characters coun
  • javascript for循环更改原始列表变量

    我有一个名为响应的对象集合 我正在创建另一个名为的变量object这是一个空对象并创建object array并将其设置为响应变量 我想我正在创建一个新的范围 但是 如果我在里面设置年龄object array作为空 这将我的响应数组中的年
  • 确定设备是智能手机还是平板电脑? [复制]

    这个问题在这里已经有答案了 我想获取有关设备的信息 看看它是智能手机还是平板电脑 我该怎么做 我想根据设备类型显示资源中的不同网页 String s Debug infos s n OS Version System getProperty
  • Home 键转到 Visual Studio Code 中的行首吗?

    Visual Studio Code 中使 Home 键转到行首的选项在哪里 现在你必须做 Home Home or Home Ctrl Left Arrow 我希望 home 位于该行的开头 奖金闲聊 文件 首选项 键盘快捷键 奖励阅读
  • 为什么如果 EOF 是行中的第一个字符,就会被识别?

    我写了这个C程序 include
  • 如何向每个 Angular.js $http 请求添加添加请求参数(例如启动 xdebug 会话)

    我的混合应用程序基于 AngularJS 并使用 php REST api 我想直接从我的 Angular 应用程序调试 php api 而不是使用 REST 控制台或 Postman 它将节省大量时间 特别是对于 POST 和 PUT 请
  • Sed 正则表达式更改文件

    我 未成功 尝试替换 Magento local xml 文件 连接字符串文件 中的数据库主机条目 该行如下
  • Python搜索目录,列出文件的基本名称,没有扩展名

    我想知道我是否可以修改我的代码以仅发布文件的基本名称 而不是包括扩展名的整个文件 我是 python 新手 所以我不太了解 而且我不知道不想修改某些东西并使其完全损坏 import glob import os os chdir C hea
  • 进程运行时不断打印子进程输出

    要从 Python 脚本启动程序 我使用以下方法 def execute command process subprocess Popen command shell True stdout subprocess PIPE stderr s