我有這樣的Python代碼:Python的try塊不能捕獲使用os.system異常
import os
try:
os.system('wrongcommand')
except:
print("command does not work")
代碼打印:
wrongcommand: command not found
而不是command does not work
。有誰知道爲什麼它不打印我的錯誤信息?
我有這樣的Python代碼:Python的try塊不能捕獲使用os.system異常
import os
try:
os.system('wrongcommand')
except:
print("command does not work")
代碼打印:
wrongcommand: command not found
而不是command does not work
。有誰知道爲什麼它不打印我的錯誤信息?
如果你想擁有,當命令不存在拋出一個異常,你應該使用subprocess
:
import subprocess
try:
subprocess.call(['wrongcommand'])
except OSError:
print ('wrongcommand does not exist')
試想想,你也許應該使用subprocess
代替os.system
反正...
wrongcommand: command not found
是shell的輸出os.system
用於調用該命令。 os.system
沒有拋出異常
編輯:由mgilson的評論
的複製和粘貼編輯部分中有您的代碼段兩個問題。首先,永遠不要僅僅做try: ... except:
,總是要具體說明你想要處理的異常。否則,您的程序只會吞下任何類型的錯誤,也包括那些您不期望的錯誤。在大多數情況下,這會在運行時導致其他某些點出現意外的行爲。
此外,os.system()
調用大部分時間應該由subprocess
模塊中的對應部分替換。
要查看出了什麼問題,請忽略try/except塊並實際查看回溯/異常。正如其他人指出的那樣,您會注意到您的案例中沒有例外,這就是您的自定義字符串未打印的原因。底線:想想您的代碼塊中可能會出現哪些特定的異常。仔細想一想你認爲哪些因爲某些原因會發生並恰當地處理這些問題。不要處理那些你不期望的事情。
由於使用os.system()表示通過所述方法
被調用命令的退出代碼直接傳回給Python。
有文件告訴你,如果發生故障,os.system()會提高豁免。 os.system()只是調用操作系統的底層系統()調用並返回其返回值。
請仔細閱讀os.system()文檔仔細。
謝謝,這正是我所需要的。 – Cinder