对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中用PIL库批量给图片加上序号的教程
May 06 Python
pandas的object对象转时间对象的方法
Apr 11 Python
Python 实现微信防撤回功能
Apr 29 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
May 13 Python
Python列表与元组的异同详解
Jul 02 Python
python搜索包的路径的实现方法
Jul 19 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
keras实现VGG16 CIFAR10数据集方式
Jul 07 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
python 6种方法实现单例模式
Dec 15 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 Python
Python图片检索之以图搜图
May 31 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
关于JS中二维数组的声明方法
2016/09/24 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
EsLint入门学习教程
2017/02/17 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
AngularJs分页插件使用详解
2018/06/30 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
python的常见命令注入威胁
2013/02/18 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python中and和or如何使用
2020/05/28 Python
什么是python的必选参数
2020/06/21 Python
Python自动登录QQ的实现示例
2020/08/28 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
日语专业个人的求职信
2013/12/03 职场文书
大学生自我鉴定
2013/12/16 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
教师党员自我评价范文
2015/03/04 职场文书
2015年中学校长工作总结
2015/05/19 职场文书