对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中处理日期和时间的基本知识点整理汇总
May 22 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
详解scrapy内置中间件的顺序
Sep 28 Python
python boto和boto3操作bucket的示例
Oct 30 Python
详解pandas映射与数据转换
Jan 22 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 Python
Python制作春联的示例代码
Jan 22 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数组最大值,最小值的代码
2011/10/31 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
php使用PDO方法详解
2014/12/27 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
jQuery列表拖动排列具体实现
2013/11/04 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
PyTorch预训练的实现
2019/09/18 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
关于母亲节的感言
2014/02/04 职场文书
校园活动宣传方案
2014/03/28 职场文书
病媒生物防治方案
2014/05/13 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python