对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避免死锁方法实例分析
Jun 04 Python
python删除本地夹里重复文件的方法
Nov 19 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
python 产生token及token验证的方法
Dec 26 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
Python 下载及安装详细步骤
Nov 04 Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 Python
python编程的核心知识点总结
Feb 08 Python
django上传文件的三种方式
Apr 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
simplehtmldom Doc api帮助文档
2012/03/26 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
初识laravel5
2015/03/02 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
大学生毕业自我鉴定范文
2014/02/03 职场文书
《三峡》教学反思
2014/03/01 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
高中运动会广播稿
2014/09/16 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript