对Python捕获控制台输出流的方法详解


Posted in Python onJanuary 07, 2019

有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码

常规用法 os.system

import os,traceback
try:
 p = os.system("javac Test.java")
 print p
except:
 print "\nexcept:\n"
 print traceback.format_exc()

如然编译成功会返回一个0,如果错误会返回一个非0的值给p,这种方法可以知道执行结果,但是无法捕获比较重要的提示信息,例如:“错误: 找不到文件: Tst.java”。

0
错误: 找不到文件: Tst.java
用法: javac <选项> <源文件>
使用 --help 可列出可能的选项
512

接下来我们用 commands.getstatusoutput 来捕获输出流

import commands,traceback
try:
 res = commands.getstatusoutput("javac Test.java")
 print res
 print res[1]
except:
 print "\nexcept:\n"
 print traceback.format_exc()

成功会返回一个tuple,例如(0, ' '),第一个元素表示状态,0代表成功,第二个是输出信息,如果错误则返回下面的结果

(512, '\xe9\x94\x99\xe8\xaf\xaf: \xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe6\x96\x87\xe4\xbb\xb6: Tst.java\n\xe7\x94\xa8\xe6\xb3\x95: javac <\xe9\x80\x89\xe9\xa1\xb9> <\xe6\xba\x90\xe6\x96\x87\xe4\xbb\xb6>\n\xe4\xbd\xbf\xe7\x94\xa8 --help \xe5\x8f\xaf\xe5\x88\x97\xe5\x87\xba\xe5\x8f\xaf\xe8\x83\xbd\xe7\x9a\x84\xe9\x80\x89\xe9\xa1\xb9')
错误: 找不到文件: Tst.java
用法: javac <选项> <源文件>
使用 --help 可列出可能的选项

以上这篇对Python捕获控制台输出流的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 快速排序代码
Nov 23 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
Python实现的科学计算器功能示例
Aug 04 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
python判断完全平方数的方法
Nov 13 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
python实现微信定时每天和女友发送消息
Apr 29 Python
PHP统计代码行数的小代码
Sep 19 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 Python
python异常中else的实例用法
Jun 15 Python
python print输出延时,让其立刻输出的方法
Jan 07 #Python
Python3 单行多行万能正则匹配方法
Jan 07 #Python
Python字符串的全排列算法实例详解
Jan 07 #Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 #Python
Python进阶之自定义对象实现切片功能
Jan 07 #Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 #Python
python读取几个G的csv文件方法
Jan 07 #Python
You might like
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
JavaScript 基本概念
2015/01/20 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python学习资料
2007/02/08 Python
Python制作词云的方法
2018/01/03 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
extern是什么意思
2016/03/10 面试题
小学教师岗位职责
2013/11/25 职场文书
市场部规章制度
2014/01/24 职场文书
表决心的诗句大全
2014/03/11 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
经销商年会策划方案
2014/05/29 职场文书
大型公益活动策划方案
2014/08/20 职场文书
销售竞赛活动方案
2014/08/23 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android