open() 函數(shù)常用形式是接收兩個參數(shù):文件名(file)和模式(mode) 。
open(file, mode=’r’)
完整的語法格式為:open(file, mode=’r’, buffering=-1, encoding=None, errors=None,newline=None, closefd=True, opener=None)
參數(shù)說明:
file: 必需,文件路徑(相對或者絕對路徑) 。
mode: 可選,文件打開模式
buffering: 設(shè)置緩沖
encoding: 一般使用utf8
errors: 報錯級別
newline: 區(qū)分換行符
closefd: 傳入的file參數(shù)類型
opener: 設(shè)置自定義開啟器,開啟器的返回值必須是一個打開的文件描述符 。
15.異常處理的定義python解釋器檢測到錯誤,觸發(fā)異常(也允許程序員自己觸發(fā)異常)
程序員編寫特定的代碼,專門用來捕捉這個異常(這段代碼與程序邏輯無關(guān),與異常處理有關(guān))
如果捕捉成功則進入另外一個處理分支,執(zhí)行你為其定制的邏輯,使程序不會崩潰,這就是異常處理
16.異常處理的意義python解析器去執(zhí)行程序,檢測到了一個錯誤時,觸發(fā)異常,異常觸發(fā)后且沒被處理的情況下,程序就在當(dāng)前異常處終止,后面的代碼不會運行,所以你必須提供一種異常處理機制來增強你程序的健壯性與容錯性
17.常見的異常AttributeError 試圖訪問一個對象沒有的屬性,比如foo.x,但是foo沒有屬性x
IOError 輸入/輸出異常;基本上是無法打開文件
ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤
IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊
IndexError 下標(biāo)索引超出序列邊界,比如當(dāng)x只有三個元素,卻試圖訪問x[5]
KeyError 試圖訪問字典里不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError 嘗試訪問一個沒有申明的變量
SyntaxError Python代碼非法,代碼不能編譯(個人認(rèn)為這是語法錯誤,寫錯了)
TypeError 傳入對象類型與要求的不符合
UnboundLocalError 試圖訪問一個還未被設(shè)置的局部變量,基本上是由于另有一個同名的全局變量,導(dǎo)致你以為正在訪問它
ValueError 傳入一個調(diào)用者不期望的值,即使值的類型是正確的
18.如何進行異常處理使用if判斷式
num1=input('>>: ') #輸入一個字符串試試if num1.isdigit(): int(num1) #我們的正統(tǒng)程序放到了這里,其余的都屬于異常處理范疇elif num1.isspace(): print('輸入的是空格,就執(zhí)行我這里的邏輯')elif len(num1) == 0: print('輸入的是空,就執(zhí)行我這里的邏輯')else: print('其他情情況,執(zhí)行我這里的邏輯')#第二段代碼# num2=input('>>: ') #輸入一個字符串試試# int(num2)#第三段代碼# num3=input('>>: ') #輸入一個字符串試試# int(num3)問題一:
使用if的方式我們只為第一段代碼加上了異常處理,針對第二段代碼,你得重新寫一堆if,elif等
而這些if,跟你的代碼邏輯并無關(guān)系,可讀性差
問題二:
第一段代碼和第二段代碼實際上是同一種異常,都是ValueError,相同的錯誤按理說只處理一次就可以了,而用if,由于這二者if的條件不同,這只能逼著你重新寫一個新的if來處理第二段代碼的異常
第三段也一樣
try…except
語法:
try:<語句> #運行別的代碼except <異常類型>: <語句> #如果在try部份引發(fā)了'name'異常except <異常類型> as <數(shù)據(jù)>:<語句> #如果引發(fā)了'name'異常,獲得附加的數(shù)據(jù)else:<語句> #如果沒有異常發(fā)生注:
python2 和 3 處理 except 子句的語法有點不同,需要注意;
Python2
try: print (1/0)except ZeroDivisionError, err: # , 加原因參數(shù)名稱 print ('Exception: ', err)Python3
try: print (1/0)except ZeroDivisionError as err: # as 加原因參數(shù)名稱 print ('Exception: ', err)例
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 學(xué)python需要的基礎(chǔ)知識 python教學(xué)設(shè)計
- 哪個培訓(xùn)班靠譜?想要培訓(xùn)Java的應(yīng)該如何選擇? 程序員編程培訓(xùn)
- 自學(xué)java堅持不下去了,要找Java培訓(xùn)機構(gòu)嗎 程序員編程培訓(xùn)
- 程序員如何快速工資翻倍 程序員編程培訓(xùn)
- 月薪3萬的程序員,脫單這么難 程序員編程培訓(xùn)
- 你做 Java 程序員真的是因為熱愛嗎? 程序員編程培訓(xùn)
- IT編程軟件培訓(xùn)學(xué)校有哪些可以選擇 程序員編程培訓(xùn)
- 編程培訓(xùn)班一般要多少錢 程序員編程培訓(xùn)
- 成都軟件開發(fā)培訓(xùn)班哪家好 程序員編程培訓(xùn)
- 數(shù)據(jù)分析用python還是bi powerbi使用教程
