对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 2.7.14安装图文教程
Apr 08 Python
基于Django与ajax之间的json传输方法
May 29 Python
python操作redis方法总结
Jun 06 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 Python
python cs架构实现简单文件传输
Mar 20 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
Python SSL证书验证问题解决方案
Jan 13 Python
利用Python计算KS的实例详解
Mar 03 Python
python实现TCP文件传输
Mar 20 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
Python基础详解之邮件处理
Apr 28 Python
pytorch 实现在测试的时候启用dropout
May 27 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
PHP模板引擎SMARTY
2006/10/09 PHP
实用函数2
2007/11/08 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
python回调函数的使用方法
2014/01/23 Python
python里将list中元素依次向前移动一位
2014/09/12 Python
Python实现子类调用父类的方法
2014/11/10 Python
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
python中尾递归用法实例详解
2015/04/28 Python
python爬取51job中hr的邮箱
2016/05/14 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
虚拟机下载python是否需要联网
2020/07/27 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
Champion官网:美国冠军运动服装
2017/01/25 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis