问题描述: ①在 Python 代码中编译可执行文件,需要监控执行过程及运行结果,当前场景等效为捕获控制台的特征信息的“打印情况”;②编译程序独占进程,且存在Terminal进度条等频繁刷新的需要监控的特征信息;③需要捕获的特征信息存在简体中文,需要做编码转换;

解决方案: 如下所示为本例参考代码。使用 Python3 内置模块 subprocess.Popen 建立channel 。设定参数encoding='utf8',转码简体中文。设定universal_newlines=True以及bufsize=1建立缓冲区,以便捕获频繁刷新的进度条等特征信息。

"""
仅用作demo演示,请勿在真实IPC场景下直接cv代码
sys: Windows
env: Python 3.7.9
"""
import os
import subprocesstitle = ""def _listener():global title# 如果您还未安装you-get脚手架 请先执行 pip install you-get 或 pip3 install you-get# 尝试直接在 Terminal 中运行 `you-get [url]` 查看区别# you-get 将嗅探目标链接下的影视资源对象,并保存至当前目录下cmd = "you-get https://www.bilibili.com/video/BV1Yv41147QK".split(' ')p = subprocess.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,universal_newlines=True,encoding='utf8',bufsize=1)while subprocess.Popen.poll(p) is None:stream = p.stdout.readline()print(stream)# 仅做演示,首次下载时捕获视频文件名if title == "" and stream.startswith("Downloading"):title = stream.split(' ')[1]def demo():_listener()# 仅作演示,自动打开下载好的视频try:os.startfile(f'{title}')except (FileNotFoundError, FileExistsError):passif __name__ == '__main__':demo()

参考资料:
[1] subprocess — Subprocess management — Python 3.7.11 documentation

python3 subprocess.Popen监控控制台输出相关推荐

  1. python3 subprocess_Python 3.4.3 subprocess.Popen获取命令输出而不管道?

    使用pexpect: 2.py: import sys if sys.stdout.isatty(): print('hello') else: print('goodbye') 子: import ...

  2. python3 subprocess.Popen 报错 No such file or directory

    问题描述 在当前目录中,当os.system("ls")查找文件时正确,命令subprocess.Popen(["wc -l filename"], stdou ...

  3. subprocess.Popen获取子程序输出

    new_child = subprocess.Popen([self.manage, worker], stderr=subprocess.PIPE) for line in iter(new_chi ...

  4. windows popen 获取不到输出_彻底明白os.system、os.popen、subprocess.popen的用法和区别...

    Hello,大家好,沉寂许久,我又来了,这次给大家分享的就是上述三个方法的使用范围和区别,不熟悉的可以在这个地方画一个圆满的句号了. os.system 首先来看这个函数的文档说明 是说是在一个子sh ...

  5. python stdout stderr 一起输出_python – 使用subprocess.Popen()时,stderr和stdout没有输出

    我正在使用 Python来自动化SVN提交,我想将SVN命令的输出写入日志文件.我有的代码可以使SVN运行,但问题是在成功提交时,子进程调用不会返回我的日志的任何输出. 当我手动运行SVN时,通过比较 ...

  6. python获取控制台输出_Python | 用Python获取Windows控制台输出

    1 os模块实现 import os cmd = 'ping baidu.com' r = os.popen(cmd) for line in r.readlines(): print (line) ...

  7. c中获取python控制台输出_linux c程序中获取shell脚本输出的实现方法

    [转]Linux Shell脚本调试技术 本文转载自:https://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ Shell脚本调试技术 ...

  8. python执行系统命令的方法_python执行系统命令的方法 :os.system(),subprocess.popen(),command...

    最近接触到os.system(),subprocess.popen()和commands来执行系统命令,从网上搜索到许多,现整理如下. 1. 使用os.system("cmd") ...

  9. Python中 os.popen、os.system和subprocess.popen方法介绍

    Python 提供了多种与操作系统交互的方法,比如os模块中的popen和system方法,此外,Python subprocess模块中的Popen类也提供了与操作系统交互的方法,使用起来更加灵活, ...

  10. python subprocess popen 多次重定向_python subprocess.Popen系列问题

    最近在项目中遇到一个需求,前端发来一个命令,这个命令是去执行传递过来的一个脚本(shell 或者python),并返回脚本的标准输出和标准出错,如果执行超过设定时间还没结束就超时,然后终止脚本的执行. ...

最新文章

  1. 爬虫之数据提取jsonpath模块的使用场景和使用方法
  2. Ansible自动化运维笔记1(安装配置)
  3. Mac OS X中MacPorts安装和使用
  4. python定位文件位置_python使用相对定位,绝对定位,选取同级别文件下的指定文件(csv,excel)...
  5. Android自定义控件实现九宫格解锁
  6. PyTorch教程(七):属性统计
  7. fedora如何删除某个包且不删除依赖它的相关包
  8. php怎么从牌里找对子,php判断半顺,顺子, 对子实例代码
  9. find的用法_【同步练习】高一英语下册find+复合宾语用法
  10. oracle中的数据对象
  11. emq数据储存到mysql,规则引擎示例 - 保存数据到 MySQL - 《EMQ X Enterprise v4.0 中文文档》 - 书栈网 · BookStack...
  12. WPF DataGrid 样式分享
  13. 学计算机好还是学西点,女生学西点师有后悔的吗 西点师有前途吗
  14. python怎么随机分组_Python|random之随机抽人分组
  15. STM32选型与命名规则
  16. 鲁宾逊微积分是什么?
  17. 超参数调整——网格搜索
  18. 【路在前端】我的前端工作流程梳理
  19. 网站优质内容细则及示例说明
  20. 手把手教你给小米游戏本安装macOS

热门文章

  1. OpenGL学习书籍推荐
  2. android 警报声音_Android接近警报教程
  3. 基础SQL第无课---数据修改
  4. 接口测试的测试用例该怎么写呢?
  5. 陈顼oracle,一次视图合并引起的性能问题
  6. 美国TOP100大学优势专业位置分布!长篇吐血整理!
  7. 当代研究生精神状态:早c晚a?!
  8. 从零开始的unity3d入门教程(二)----基本功能讲解
  9. win7升级win10正式版_Win7系统如何才能升级成win10系统?
  10. python读取pcd文件_Python读取pcd点云文件