对Python捕获控制台输出流的方法详解

 更新时间:2019年01月07日 15:36:02   作者:seTaire  
今天小编就为大家分享一篇对Python捕获控制台输出流的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

有时候我们的代码里可能要调用控制台命令,比如我想用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 计算机视觉编程进阶之图像特效处理篇

    计算机视觉这种技术可以将静止图像或视频数据转换为一种决策或新的表示。所有这样的转换都是为了完成某种特定的目的而进行的,本篇我们来学习下如何对图像进行特效处理
    2021-11-11
  • pygame学习笔记之设置字体及显示中文

    pygame学习笔记之设置字体及显示中文

    游戏界面中文字也是非常常见的元素之一,pygame专门提供了Font模块来支持文字的显示,下面这篇文章主要给大家介绍了关于pygame学习笔记之设置字体及显示中文的相关资料,需要的朋友可以参考下
    2022-07-07
  • Python 实现一行输入多个值的方法

    Python 实现一行输入多个值的方法

    下面小编就为大家分享一篇Python 实现一行输入多个值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 在Pycharm中将pyinstaller加入External Tools的方法

    在Pycharm中将pyinstaller加入External Tools的方法

    今天小编就为大家分享一篇在Pycharm中将pyinstaller加入External Tools的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python pdfplumber库批量提取pdf表格数据转换为excel

    python pdfplumber库批量提取pdf表格数据转换为excel

    这篇文章主要为大家介绍了python使用pdfplumber库批量提取pdf表格数据转换为excel格式的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python 获取图片GPS等信息锁定图片拍摄地点、拍摄时间(实例代码)

    Python 获取图片GPS等信息锁定图片拍摄地点、拍摄时间(实例代码)

    这篇文章主要介绍了Python 获取图片GPS等信息锁定图片拍摄地点、拍摄时间,先把图片以二进制的格式读取出来,然后通过 exifread 库把里面的 GPS 信息提取出来,再以特定的格式打印出来,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Python 列表(List) 的三种遍历方法实例 详解

    Python 列表(List) 的三种遍历方法实例 详解

    这篇文章主要介绍了Python 列表(List) 的三种遍历方法实例 详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • python 环境变量和import模块导入方法(详解)

    python 环境变量和import模块导入方法(详解)

    下面小编就为大家带来一篇python 环境变量和import模块导入方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 浅析Python面向对象编程

    浅析Python面向对象编程

    这篇文章主要介绍了Python面向对象编程的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • python中的标准库html

    python中的标准库html

    html库是用于解析HTML的一个工具,是python自带的标准库之一,今天通过本文给大家介绍下python中的标准库html,感兴趣的朋友一起看看吧
    2022-04-04

最新评论