对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 03 Python
对于Python的Django框架使用的一些实用建议
Apr 03 Python
Python3实现的简单验证码识别功能示例
May 02 Python
Python实现矩阵相乘的三种方法小结
Jul 26 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
python 整数越界问题详解
Jun 27 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
python实现广度优先搜索过程解析
Oct 19 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
pandas统计重复值次数的方法实现
Feb 20 Python
Python中json.dumps()函数的使用解析
May 17 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
收音机指标测试方法及仪器
2021/03/01 无线电
PHP令牌 Token改进版
2008/07/18 PHP
php 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
基于jQuery的自动完成插件
2011/02/03 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
17个Python小技巧分享
2015/01/23 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
Python实现的端口扫描功能示例
2018/04/08 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
《童年的发现》教学反思
2014/02/14 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
安全保证书
2015/01/16 职场文书
工作试用期自我评价
2015/03/10 职场文书
2015大学迎新标语
2015/07/16 职场文书
大队委员竞选稿
2015/11/20 职场文书
七年级作文之英语老师
2019/10/28 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server