有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码
常规用法 os.system
import os,tracebacktry: p = os.system("javac Test.java") print pexcept: print "/nexcept:/n" print traceback.format_exc()
如然编译成功会返回一个0,如果错误会返回一个非0的值给p,这种方法可以知道执行结果,但是无法捕获比较重要的提示信息,例如:“错误: 找不到文件: Tst.java”。
0
错误: 找不到文件: Tst.java用法: javac <选项> <源文件>使用 --help 可列出可能的选项512
接下来我们用 commands.getstatusoutput 来捕获输出流
import commands,tracebacktry: 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捕获控制台输出流的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。
新闻热点
疑难解答
图片精选