对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通过apply使用元祖和列表调用函数实例
May 26 Python
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
在Python的Django框架中包装视图函数
Jul 20 Python
Python求出0~100以内的所有素数
Jan 23 Python
python中logging包的使用总结
Feb 28 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
如何在Django中设置定时任务的方法示例
Jan 18 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
Pandas的数据过滤实现
Jan 15 Python
Python实现聚类K-means算法详解
Jul 15 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分页示例代码
2007/03/19 PHP
什么是MVC,好东西啊
2007/05/03 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
python对象与json相互转换的方法
2019/05/07 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
音乐专业应届生教师求职信
2013/11/04 职场文书
销售总监工作职责
2013/11/21 职场文书
捐款倡议书范文
2014/02/02 职场文书
师德师风演讲稿
2014/05/05 职场文书
动物科学专业求职信
2014/07/27 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技