使用子进程获取实时输出[重复]

2024-02-10

我正在尝试为命令行程序(svnadmin verify)编写一个包装脚本,它将显示一个很好的操作进度指示器。这要求我能够在包装程序输出后立即看到输出的每一行。

我想我只需使用以下命令执行该程序subprocess.Popen, use stdout=PIPE,然后阅读进入的每一行并采取相应的操作。但是,当我运行以下代码时,输​​出似乎在某处缓冲,导致它出现在两个块中,即第 1 行到第 332 行,然后是第 333 行到第 439 行(输出的最后一行)

from subprocess import Popen, PIPE, STDOUT

p = Popen('svnadmin verify /var/svn/repos/config', stdout = PIPE, 
        stderr = STDOUT, shell = True)
for line in p.stdout:
    print line.replace('\n', '')

稍微查看了有关子流程的文档后,我发现了bufsize参数为Popen,所以我尝试将 bufsize 设置为 1(缓冲每行)和 0(无缓冲),但这两个值似乎都没有改变行的传递方式。

此时我开始抓住救命稻草,所以我编写了以下输出循环:

while True:
    try:
        print p.stdout.next().replace('\n', '')
    except StopIteration:
        break

但得到了相同的结果。

是否可以获得使用子进程执行的程序的“实时”程序输出? Python 中是否还有其他向前兼容的选项(不是exec*)?


我尝试了这个,由于某种原因,而代码

for line in p.stdout:
  ...

积极缓冲,变体

while True:
  line = p.stdout.readline()
  if not line: break
  ...

才不是。显然这是一个已知的错误:http://bugs.python.org/issue3907 http://bugs.python.org/issue3907(截至2018年8月29日,该问题现已“关闭”)

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

使用子进程获取实时输出[重复] 的相关文章

  • 将字符串转换为浮点数列表(在 python 中)

    出于数据存储的目的 我尝试从 txt 文件恢复浮点列表 从字符串中可以看出 a 1 3 2 3 4 5 我想恢复 a 1 3 2 3 4 5 我期待一个简单的解决方案 例如list a 但我找不到类似的东西 Use the AST模块 Ex
  • 使用 pyppeteer 与 asyncio 关联来抓取内容

    我用 python 结合编写了一个脚本pyppeteer随着asyncio从其登陆页面抓取不同帖子的链接 并最终通过跟踪通向其内页的 url 来获取每个帖子的标题 我这里解析的内容不是动态的 但是 我利用了pyppeteer and asy
  • 嵌套函数中的变量作用域

    有人可以解释为什么以下程序失败 def g f for in range 10 f def main x 10 def f print x x x 1 g f if name main main 带有消息 Traceback most re
  • MacOS Big Sur 中的 NPM 错误“找不到 Python 可执行文件”

    我已经花了整整一周的时间寻找这个问题的答案 但没有成功 我查看了每个 StackOverflow 帖子 Google 的每一篇文章以及我能找到的每个相关的 Github 问题 大多数相关错误似乎都比较旧 所以我想知道我的问题是否由于我使用的
  • TemplateSyntaxError:“settings_tags”不是有效的标签库

    当我尝试运行此测试用例时 出现此错误 这是在我的 django 应用程序的tests py 中编写的 def test accounts register self self url http royalflag com pk accoun
  • FastAPI UploadFile 与 Flask 相比慢

    我创建了一个端点 如下所示 app post report upload def create upload files files UploadFile File try with open files filename wb as wf
  • 如何用pygame画一条虚线?

    我需要在坐标系上绘制正弦波和余弦波 就像在this https i stack imgur com DGI8g png图片 除了没能代表以外 我所有的工作都做得很好虚线和曲线与 pygame 一致 我有与我需要的类似的东西 但我怎样才能让它
  • 按升序对数字字符串列表进行排序

    我创建了一个SQLite https en wikipedia org wiki SQLite数据库有一个存储温度值的表 第一次将温度值按升序写入数据库 然后 我将数据库中的温度值读入列表中 然后将该列表添加到组合框中以选择温度 效果很好
  • Python 模块 BeautifulSoup 提取锚点 href

    我正在使用 BeautifulSoup 模块通过以下方式从 html 选择所有 href def extract links html soup BeautifulSoup html anchors soup findAll a print
  • 在添加数据之前使用 Python gdata 清除工作表中的行

    我有一个 Google 电子表格 我使用 python 脚本和 gdata 库填充值 如果我多次运行脚本 它会将新行附加到工作表中 我希望脚本在填充之前首先清除行中的所有数据 这样每次运行时我都会有一组新的数据脚本 我尝试过使用 Updat
  • 类型错误:无法连接“str”和“int”对象有人可以帮助新手使用他们的代码吗?

    感谢任何帮助 还有任何重大缺陷或您在格式或基本方面看到的任何重大缺陷 请指出 谢谢 day raw input How many days locations raw input Where to days str day location
  • 在基本 Tensorflow 2.0 中运行简单回归

    我正在学习 Tensorflow 2 0 我认为在 Tensorflow 中实现最基本的简单线性回归是一个好主意 不幸的是 我遇到了几个问题 我想知道这里是否有人可以提供帮助 考虑以下设置 import tensorflow as tf 2
  • 我应该在哪里对对象和字段进行 django 验证?

    我正在创建一个 Django 应用程序 它使用 Django Rest Framework 和普通的 django views 作为用户的入口点 我想对模型的独立字段以及整个对象进行验证 例如 字段 根据正则表达式函数输入的车牌是否正确 与
  • 如何在 Jupyter Notebook 中选择 conda 环境

    我安装了 Anaconda 5 3 和 Python 3 7 根环境 之后我使用 Python 3 6 创建了一个新环境 py36 我激活了新环境activate py36 conda env list表明环境是活跃的 但是当我启动 Jup
  • 如何使用 Matplotlib 可视化标量二维数据?

    所以我有一个网格网格 矩阵 X 和 Y 以及标量数据 矩阵 Z 我需要将其可视化 最好是一些 2D 图像 在各点处带有颜色 显示 Z 值 我做了一些研究 但没有找到任何能完全满足我想要的效果的东西 pyplot imshow Z 看起来不错
  • 如何将另一整列作为参数传递给 pandas fillna()

    我想用另一列中的值填充一列中的缺失值 使用fillna方法 我读到循环遍历每一行将是非常糟糕的做法 最好一次完成所有事情 但我不知道如何使用fillna 之前的数据 Day Cat1 Cat2 1 cat mouse 2 dog eleph
  • 无法将 librosa 与 python 3 一起使用

    我已经在 Windows 上的 ubuntu 子系统上使用 pip3 正确安装了 librosa 但是当我尝试执行像这样的简单程序时 import librosa data sr librosa load sound mp3 print d
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • Python 中的可逆 STFT 和 ISTFT

    有没有通用的形式短时傅立叶变换 https en wikipedia org wiki Short time Fourier transform与内置于 SciPy 或 NumPy 或其他什么中的相应逆变换 这是pyplotspecgram
  • nltk 标记化和缩写

    我用 nltk 对文本进行标记 只是将句子输入到 wordpunct tokenizer 中 这会拆分缩写 例如 don t 到 don t 但我想将它们保留为一个单词 我正在改进我的方法 以实现更精确的文本标记化 因此我需要更深入地研究

随机推荐

  • 在 gwt 中上传到服务器之前在客户端上显示图像

    我想在将图像上传到服务器之前在客户端上显示图像及其尺寸 每当我尝试创建一个Imagegwt ext 的小部件 它不接受本地文件 在文件系统上 它只接受http请求 我也尝试过String img GWT getHostPageBaseURL
  • 在MAMP上安装Mongo驱动

    我已经下载 编译并安装了最新的 mongo php 驱动程序 它位于 opt local lib php extensions no debug non zts 20090626 mongo so 我该如何将其添加到 MAMP php in
  • 访问存储正则表达式的二维数组以进行表单验证

    我正在尝试循环遍历表单字段并针对存储在数组中的正则表达式进行验证 看不出这里出了什么问题 有什么想法吗
  • 如何在 keras 生成器中使用 numpy memmap 不超过 RAM 内存?

    我正在尝试在生成器内实现 numpy memmap 方法 以使用 keras 训练神经网络 以免超出内存 RAM 限制 我用这个作为参考post https stackoverflow com questions 45132940 nump
  • BLUEZ 中的 DBUS API

    我是 BLUEZ 和 Linux 的新手 我发现 Bluez 提倡使用 DBUS API 我还想知道 BLUEZ 中的 DBUS API 是什么 使用它们而不是直接的 C API 有什么好处 与 C API 相比有何不同 从我自己的经验来看
  • 如何使用 Mockito 在 Flutter 中模拟静态方法?

    我有一个文件函数fetchPosts 它负责从服务器获取新帖子并将其存储在本地 sqlite 数据库中 正如 sqflite 上的推荐doc https github com tekartik sqflite blob master sqf
  • Rails 3.1 错误捕获

    我认为 Rails 3 1 正在改变引发错误的方式 任何人都可以协助或确认这一点吗 我正在尝试使用 Rails 3 1 0 rc1 创建自定义错误页面 unless config consider all requests local re
  • LinearLayout achartengine 图表不显示在 ScrollView 中

    我正在尝试在滚动视图中创建 achartengine 图表 但它不会显示 它只显示黑屏 但不会崩溃或发生任何情况 问题是 如果我只是将标签更改为图表显示就好了 在我的 Java 代码中 我确实有 renderer setInScroll t
  • 使用 Modernizr 加载脚本...不工作

    我在尝试使用 Modernizr 版本的 yepnope 加载脚本时遇到问题 并且无法理解它们为何不同 如果我使用 yep nope 加载脚本 它可以正常工作
  • NSubstitute DbSet / IQueryable

    因此 EntityFramework 6 比以前的版本具有更好的可测试性 还有一些很好的例子 http msdn microsoft com en us data dn314429 queryTest在互联网上寻找像 Moq 这样的框架 但
  • 排序忽略标点符号 (Objective-C)

    我正在尝试对 iOS UITableView 对象进行排序 我目前正在使用以下代码 Sort terms alphabetically ignoring case self termsList sortUsingSelector selec
  • 如何查找映射驱动器的可用空间百分比?

    是否可以以编程方式查找映射驱动器中的可用空间 如何使用 ms dos 查找驱动器中可用空间的百分比 在硬盘中找到驱动器的可用空间可能很容易 但我需要找到映射驱动器的可用空间 我已经在我的系统中映射了一些文件服务器 可以在 我的电脑 中看到它
  • Octave并行计算

    我在网上找到了一些资料 表明 Octave 有一些工具可以并行化算法 但找不到任何细节或如何获取和使用它们 对此的任何帮助 见解都会很棒 http octave sourceforge net parallel http octave so
  • VSO 和单个产品团队的多个项目

    我们有一个由大约 10 名开发人员组成的团队正在开发新产品 我们已将此产品拆分为 Visual Studio Online 上的两个团队项目 开发人员可以在任何一个冲刺期间同时处理这两个项目 尽管我们有两个团队项目 但整个团队作为一个敏捷单
  • 如何解决:引用的 AMP URL 不是 AMP

    搜索控制台添加了一系列 引用的 AMP URL 不是 AMP 的问题 如果我使用 I get 然而 当我登记入住时https validator ampproject org https validator ampproject org 表
  • R 的同比百分比变化

    虽然我发现了几个类似的问题 但我无法在基础 R 中找到解决我的问题的简单方法 我想计算一组数据 此处为 y 值 的同比百分比变化 并将此 Delta 系列作为新列添加到我的数据框中 例如 gt x c 2000 2001 2002 2003
  • 我可以使用 Objective-C 将块作为 @selector 传递吗?

    是否可以传递一个 Objective C 块 selector论证中的一个UIButton 即 有什么办法可以让以下工作发挥作用吗 closeOverlayButton addTarget self action anotherIvarLo
  • 调用 SelectAll() 后,文本框的光标如何移动到文本的开头?

    在某些情况下 当焦点设置到特定文本框时 光标会自行停在文本之前 如下所示 然而 TextBox 有一个 GotFocus 处理程序 可以显式选择所有文本 private void txtQty GotFocus object sender
  • 如何在乘以 pandas DataFrame 时将 NaN 或未对齐的值视为 1 或 0

    我想将未对齐或缺失 NaN Inf Inf 值视为 1 或 0 df1 pd DataFrame x 1 2 3 4 5 y 3 4 5 6 7 index a b c d e df2 pd DataFrame y 1 NaN 3 4 5
  • 使用子进程获取实时输出[重复]

    这个问题在这里已经有答案了 我正在尝试为命令行程序 svnadmin verify 编写一个包装脚本 它将显示一个很好的操作进度指示器 这要求我能够在包装程序输出后立即看到输出的每一行 我想我只需使用以下命令执行该程序subprocess