对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的Tkinter编写登陆注册界面
Jun 30 Python
python抓取京东小米8手机配置信息
Nov 13 Python
Python构建图像分类识别器的方法
Jan 12 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
python [:3] 实现提取数组中的数
Nov 27 Python
python3爬取torrent种子链接实例
Jan 16 Python
Python变量作用域LEGB用法解析
Feb 04 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
记一次django内存异常排查及解决方法
Aug 07 Python
python 实现音频叠加的示例
Oct 29 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 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检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
python网络编程之读取网站根目录实例
2014/09/30 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
Python类反射机制使用实例解析
2019/12/30 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
Django配置跨域并开发测试接口
2020/11/04 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
信息科学与技术专业求职信范文
2014/02/20 职场文书
公司新年寄语
2014/04/04 职场文书
聘任书格式及范文
2015/09/21 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书