有时候我们的代码里可能要调用控制台命令,比如我想用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