有時候我們的代碼里可能要調用控制臺命令,比如我想用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捕獲控制臺輸出流的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答