对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中isalnum()方法的使用
May 18 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
python算法表示概念扫盲教程
Apr 13 Python
django实现前后台交互实例
Aug 07 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 Python
基于pycharm导入模块显示不存在的解决方法
Oct 13 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
Python创建数字列表的示例
Nov 28 Python
python如何使用腾讯云发送短信
Sep 17 Python
Django中和时区相关的安全问题详解
Oct 12 Python
golang中的空接口使用详解
Mar 30 Python
Python 数据可视化之Matplotlib详解
Nov 02 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实现的操作excel类详解
2016/01/15 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
微信小程序签到功能
2018/10/31 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
Python生成pdf文件的方法
2014/08/04 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
深入浅析python with语句简介
2018/04/11 Python
python2.7实现爬虫网页数据
2018/05/25 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
工地标语大全
2014/06/18 职场文书
白鹤梁导游词
2015/02/06 职场文书
基石观后感
2015/06/12 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
Python实现位图分割的效果
2021/11/20 Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS