对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的id()函数介绍
Feb 10 Python
python实现红包裂变算法
Feb 16 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
Oct 16 Python
Python Pexpect库的简单使用方法
Jan 29 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
在python中logger setlevel没有生效的解决
Feb 21 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
python openCV自制绘画板
Oct 27 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
Python Django获取URL中的数据详解
Nov 01 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
Laravel相关的一些故障解决
2020/08/19 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
uni app仿微信顶部导航条功能
2019/09/17 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
python设置中文界面实例方法
2020/10/27 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
应届生体育教师自荐信
2013/10/03 职场文书
元旦晚会策划方案
2014/02/18 职场文书
项目施工员岗位职责
2014/03/09 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
捐书仪式主持词
2015/07/04 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
500字作文之周记
2019/12/13 职场文书
你需要掌握的20个Python常用技巧
2022/02/28 Python
服务器SVN搭建图文安装过程
2022/06/21 Servers