python可以在多平臺運行 體現了_Python:使用異常處理來判斷運行的平臺

try:importtermios, TERMIOS               1exceptImportError:try:importmsvcrt                  2exceptImportError:try:from EasyDialogs importAskPassword   3exceptImportError:

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 到適合的函數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534130.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534130.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534130.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python精通時間_學Python需要多久能學會?精通Python需要多長時間?

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓 嚴格意思上的說,Python其實是一個腳本語言,編程語言多種多樣,但是卻有開源和閉源之分,Python就是一種開放核心源代碼編程語言,其開發代碼的效率非常高,代碼編…

linux 文檔編輯器 word,linux下vi編輯器命令大全

常用命令linux下vi編輯器命令大全來源:考試大 【學而優則進,考試大以成!】 2007年8月14日  文本編輯器是所有計算機系統中最常用的一種工具。UNIX下的編輯器有ex,sed和vi等,其中,使用最為廣泛的是vi,而vi…

西門子觸摸屏修改ip地址_基于博途V15 西門子S7-1200與觸摸屏一個簡單的例子

本篇是《基于博途V15 西門子S7-1200 ...》系列的后續篇,看懂本篇文章之前請大家關注我,然后查找相關文章,學習之后再學習此篇。也請專業領域的大神批評指正。感謝大家關注與支持!步驟:1. 創建項目創建名稱為PLC_HMI2. …

mac os和linux和安卓,在我的安卓手機里,安裝Windows和macOS系統

原標題:在我的安卓手機里,安裝Windows和macOS系統不知道各位差友還記不記得,世超前陣子分享過一款無需越獄,就能讓 iPhone 和 iPad 運行其它系統的虛擬機軟件 UTM。當時世超正是靠著這個軟件,才得以讓 iPad 成功跑上了…

python連接mysql代碼_Python3連接MySQL(pymysql)轉賬代碼

# coding:utf8 import sys # Python3 采用pymysql 連接MySQL import pymysql class TransferMoney(object): def __init__(self,conn): self.connconn def check_acct_available(self,acctid): cursor self.conn.cursor() try: sql"select * from account where acctid%s…

gc java root_C#技術漫談之垃圾回收機制(GC)

GC的前世與今生雖然本文是以.NET作為目標來講述GC,但是GC的概念并非才誕生不久。早在1958年,由鼎鼎大名的圖林獎得主John McCarthy所實現的Lisp語言就已經提供了GC的功能,這是GC的第一次出現。Lisp的程序員認為內存管理太重要了,所…

中信銀行c語言筆試題庫,中信銀行筆試題型及題目

中信銀行筆試題型及題目考試題型一:專業知識(2個小時)1.專業知識單選,60題,每題1分。2.專業知識多選,20題,每題1分,未選全即少選得0.5分,錯選、漏選得0分。3.英語閱讀,20分&#xff…

北航軟件工程碩士_21考研擇校 | 北京航空航天大學軟件工程怎么樣?

??? 軟件工程考研獨家平臺撰稿 | 康康哥編輯 | 麗麗姐本文由懂計算機、軟件工程的博士師哥原創01學校名氣北京航空航天大學,簡稱“北航”,是一所把“985”、“211”、“雙一流”寫進骨子里的學校。為什么這么說呢?這得從源頭說起&#xff…

kettle同步數據到hive 巨慢_超詳細教程,kettle ETL mysql到hadoop hive數據抽取,值得收藏...

那么如何將mysql數據導入到hive里呢,kettle里有自帶方法,可以通過表輸入和表輸出來實現,不過自帶的方法載入數據極其緩慢,不推薦使用這種方法。1、hive建表注意hive表使用“^”作為分隔符,這個可以更具實際情況來。2、…

linux 查看path文件,linux入門之環境變量與文件查找

環境變量分類當前 Shell 進程私有用戶自定義變量,如上面我們創建的 temp 變量,只在當前 Shell 中有效。Shell 本身內建的變量。從自定義變量導出的環境變量。declare tmp;tmp"shiyanlou i love y";echo $tmp ; **不要忘記$**實驗樓…

python手機編譯器可以干什么_世界上最好的Python編輯器是什么?

在這種情況下,你需要使用一個 IDE(集成開發環境)或專用的代碼編輯器。由于 Python 是最流行的編程語言之一,IDE 的選擇也非常多。那么問題來了:「究竟什么樣的 IDE 最適合 Python?」 很明顯,沒有…

c是過程化語言嗎數據庫,A.數據庫語言B.過程化語言C.宿主語言D.數據庫管理系統...

A.數據庫語言B.過程化語言C.宿主語言D.數據庫管理系統更多相關問題[填空題] 為了安全起見,起動發動機前要檢查()有無行人。---叉車操作和保養手冊第2-77.在起動叉車前()以警告周圍的人。[單選] 制造廠規定叉車走合期一…

python讀取xlsx文件pandas_用Python的pandas框架操作Excel文件中的數據教程

引言 本文的目的,是向您展示如何使用pandas來執行一些常見的Excel任務。有些例子比較瑣碎,但我覺得展示這些簡單的東西與那些你可以在其他地方找到的復雜功能同等重要。作為額外的福利,我將會進行一些模糊字符串匹配,以此來展示一…

delphi 生成 超大量xml_用OpenCV4實現圖像的超分別率

用OpenCV4實現圖像的超分別率本實驗原文鏈接: f"https://arxiv.org/pdf/1807.06779.pdf">https://arxiv.org/pdf/1807.06779.pdf原文摘要單圖像超分辨率(SISR)的主要挑戰是如何恢復微小紋理等高頻細節。然而,大多數最…

dubbo全局異常處理_基于spring aop的dubbo異常統一處理

dubbo統一異常處理,調用方只顯示封裝后的異常。1、返回封裝后的Exception2、返回封裝后的統一返回信息import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Aspect;import org.slf4j.Logger;import org.slf4j.LoggerFactory;impo…

python123平臺作業答案第十一周_馬哥2016全新Linux+Python高端運維班第十次作業

系統的INPUT和OUTPUT默認策略為DROP,請完成以下關于iptables的題目;iptables -A INPUT -d 10.18.11.13 -p tcp --dport 22 -j ACCEPT #允許ssh端口 iptables -A OUTPUT -s 10.18.11.13 -p tcp --sport 22 -j ACCEPT iptables -P OUTPUT DROP #設置OUTPUT…

義教志愿服務系統c語言,[志愿服務]以己為師 東科學子義教傳愛心

為積極響應國家教育計劃,豐富孩子們的暑期生活,進一步落實“春泥”課堂先進義教理念,7月12日,浙江海洋大學東海科學技術學院大學生“海島征程十五載,紅色基因永傳承”赴螞蟻島實踐團23名隊員走進螞蟻島文化禮堂&#x…

主動斷開socket鏈接_TCP連接與斷開詳解(socket通信)

http://blog.csdn.net/Ctrl_qun/article/details/52518479一、TCP數據報結構以及三次握手TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基于字節流的通信協議,數據在傳輸前要建立連接,傳輸完畢后還要斷開連接。…

大整數算術求值 c語言 棧,用C語言實現 多位整數的四則運算,用棧,例如56*(12+20)-102/2...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓gets(szExpression);// 中綴表達式轉后綴表達式&#xff0c;結果保存在expression中for (int i 0; i < strlen(szExpression); i){if (isspace(szExpression[i])) // 空白字符{if (bFindBegin){expression[num].type 1;expres…

java可視化壓縮_WEB可視化技術發展

EverCraft一直在關注Web可視化技術的發展&#xff0c;本文對國外一篇感覺很不錯的綜述性文章進行翻譯&#xff0c;供這一領域的愛好者相互學習。這篇paper的信息為&#xff1a;“Mwalongo, F., et al., State-of-the-Art Report in Web-based Visualization. COMPUTER GRAPHICS…