Python中使用異常處理來判斷運行的操作系統(tǒng)平臺方法
代碼實例:
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 獨有的一個模塊,它提供了對于輸入終端的底層控制。如果這個模塊無效 (因為它不在你的系統(tǒng)上,或你的系統(tǒng)不支持它),則導(dǎo)入失敗,Python 引發(fā)我們捕捉的 ImportError 異常。
2:OK,我們沒有 termios,所以讓我們試試 msvcrt,它是 Windows 獨有的一個模塊,可以提供在 Microsoft Visual C++ 運行服務(wù)中的許多有用的函數(shù)的一個API。如果導(dǎo)入失敗,Python 會引發(fā)我們捕捉的 ImportError 異常。
3:如果前兩個不能工作,我們試著從 EasyDialogs 導(dǎo)入一個函數(shù),它是 Mac OS 獨有的一個模塊,提供了各種各樣類型的彈出對話框。再一次,如果導(dǎo)入失敗,Python 會引發(fā)一個我們捕捉的 ImportError 異常。
4:這些平臺特定的模塊沒有一個有效 (有可能,因為 Python 已經(jīng)移植到了許多不同的平臺上了),所以我們需要回頭使用一個缺省口令輸入函數(shù) (這個函數(shù)定義在 getpass 模塊中的別的地方)。注意我們在這里所做的:我們將函數(shù) default_getpass 賦給變量 getpass。如果你讀了官方 getpass 文檔,它會告訴你 getpass 模塊定義了一個 getpass 函數(shù)。它是這樣做的:通過綁定 getpass 到正確的函數(shù)來適應(yīng)你的平臺。然后當你調(diào)用 getpass 函數(shù)時,你實際上調(diào)用了平臺特定的函數(shù),是這段代碼已經(jīng)為你設(shè)置好的。你不需要知道或關(guān)心你的代碼正運行在何種平臺上;只要調(diào)用 getpass,則它總能正確處理。
5:一個 try...except 塊可以有一條 else 子句,就像 if 語句。如果在 try 塊中沒有異常引發(fā),然后 else 子句被執(zhí)行。在本例中,那就意味著如果 from EasyDialogs import AskPassword 導(dǎo)入可工作,所以我們應(yīng)該綁定 getpass 到 AskPassword 函數(shù)。其它每個 try...except 塊有著相似的 else 子句,當我們發(fā)現(xiàn)一個 import 可用時,就綁定 getpass 到適合的函數(shù)。
相關(guān)文章
Django的用戶模塊與權(quán)限系統(tǒng)的示例代碼
這篇文章主要介紹了Django的用戶模塊與權(quán)限系統(tǒng)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python實用庫 PrettyTable 學(xué)習(xí)筆記
這篇文章主要介紹了Python實用庫 PrettyTable 學(xué)習(xí)筆記,結(jié)合實例形式分析了Python表格操作庫PrettyTable的安裝、使用技巧與相關(guān)注意事項,需要的朋友可以參考下2019-08-08解決90%的常見問題的8個python NumPy函數(shù)
這篇文章主要為大家介紹了解決90%的常見問題的8個python NumPy函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06