对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中使用元类的教程
Apr 28 Python
Python中datetime模块参考手册
Jan 13 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
python绘制直线的方法
Jun 30 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
python 实现多维数组转向量
Nov 30 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
django数据模型中null和blank的区别说明
Sep 02 Python
Python调用飞书发送消息的示例
Nov 10 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
python中print格式化输出的问题
Apr 16 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
php 强制下载文件实现代码
2013/10/28 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
React 组件间的通信示例
2018/06/14 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python实现二维插值的三维显示
2018/12/17 Python
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
夜大毕业自我鉴定
2013/10/11 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
项目建议书范文
2014/05/12 职场文书
小区文明倡议书
2014/05/16 职场文书
新教师岗前培训方案
2014/06/05 职场文书
代领毕业证委托书
2014/08/02 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
初中重阳节活动总结
2015/05/05 职场文书