对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学习笔记 下载
Feb 10 Python
跟老齐学Python之从格式化表达式到方法
Sep 28 Python
python中sets模块的用法实例
Sep 30 Python
零基础写python爬虫之抓取百度贴吧代码分享
Nov 06 Python
如何用itertools解决无序排列组合的问题
May 18 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
用pycharm开发django项目示例代码
Jun 13 Python
Python 中Django安装和使用教程详解
Jul 03 Python
Python画图高斯分布的示例
Jul 10 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Python WebSocket长连接心跳与短连接的示例
Nov 24 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Apr 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
Home Coffee Roasting
2021/03/03 咖啡文化
用PHP调用数据库的存贮过程!
2006/10/09 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
用javascript实现自定义标签
2007/05/08 Javascript
ext jquery 简单比较
2010/04/07 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python生成不重复随机值的方法
2015/05/11 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
python爬虫中多线程的使用详解
2019/09/23 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
致百米运动员广播稿
2014/01/29 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
建筑安全责任书范本
2014/07/24 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
2014年安全员工作总结
2014/11/13 职场文书
投资意向协议书
2015/01/29 职场文书
小学教师年度个人总结
2015/02/05 职场文书
2015年统战工作总结
2015/05/19 职场文书
如何书写邀请函?
2019/06/24 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js