Python 使用異常處理來判斷執行的平台

2022-02-03 12:33:33 字數 1540 閱讀 5313

try

:

import

termios, termios               1

except

importerror:

try:

import

msvcrt                  2

except

importerror:

try:

from easydialogs import

askpassword   3

except

importerror:

getpass = "

default_getpass

"        4

else

: getpass = "

askpassword

"          5

else

: getpass = "

win_getpass

"else

: getpass = "

unix_getpass

"

1:termios 是 unix 獨有的乙個模組,它提供了對於輸入終端的底層控制。如果這個模組無效 (因為它不在你的系統上,或你的系統不支援它),則匯入失敗,python 引發我們捕捉的 importerror 異常。

2:ok,我們沒有 termios,所以讓我們試試 msvcrt,它是 windows 獨有的乙個模組,可以提供在 microsoft visual c++ 執行服務中的許多有用的函式的乙個api。如果匯入失敗,python 會引發我們捕捉的 importerror 異常。

3:如果前兩個不能工作,我們試著從 easydialogs 匯入乙個函式,它是 mac os 獨有的乙個模組,提供了各種各樣型別的彈出對話方塊。再一次,如果匯入失敗,python 會引發乙個我們捕捉的 importerror 異常。

4:這些平台特定的模組沒有乙個有效 (有可能,因為 python 已經移植到了許多不同的平台上了),所以我們需要回頭使用乙個預設口令輸入函式 (這個函式定義在 getpass 模組中的別的地方)。注意我們在這裡所做的:我們將函式 default_getpass 賦給變數 getpass。如果你讀了官方 getpass 文件,它會告訴你 getpass 模組定義了乙個 getpass 函式。它是這樣做的:通過繫結 getpass 到正確的函式來適應你的平台。然後當你呼叫 getpass 函式時,你實際上呼叫了平台特定的函式,是這段**已經為你設定好的。你不需要知道或關心你的**正執行在何種平台上;只要呼叫 getpass,則它總能正確處理。

5:乙個 try...except 塊可以有一條 else 子句,就像 if 語句。如果在 try 塊中沒有異常引發,然後 else 子句被執行。在本例中,那就意味著如果 from easydialogs import askpassword 匯入可工作,所以我們應該繫結 getpass 到 askpassword 函式。其它每個 try...except 塊有著相似的 else 子句,當我們發現乙個 import 可用時,就繫結 getpass 到適合的函式。

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...

Python 異常處理使用方法

常見的錯誤型別 常見錯誤 exception 常規錯誤的基類 attributeerror 物件沒有這個屬性 eoferror 沒有內建輸入,到達eof標記 importerror 匯入模組 物件失敗 indexerror 序列中沒有此索引 keyerror 對映中沒有這個鍵 memoryerror...

python異常舉例 Python異常處理

1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...