《Head First Python》筆記 第三章 文件與異常

文件與異常 Files and Exceptions: Dealing with Errors

Python中的基本輸入機制是**基於行(line based)**的:當程序從文本文件中讀入數據時,一次讀取一行。app

使用open() BIF打開一個磁盤文件,建立一個迭代器從文件讀取數據,一次讀取一個數據行。學習

在此輸入圖片描述

通常流程:打開—處理—關閉ui

在此輸入圖片描述

例子(要看註釋):code

在此輸入圖片描述

split()方法返回一個字符串列表(list),這會賦值至一個目標標識符列表。這稱爲多重賦值(multiple assignment)圖片

在此輸入圖片描述

注意到上面的目標標識符列表是用小括號包圍,而不是中括號。ip

Python有兩種類型的列表:一種是能夠改變的列表(用中括號包圍),另外一種一旦建立就不能改變(用小括號包圍)。後者是一種不可變列表(immutable list),一般稱爲元組(tuple)。能夠認爲元組等同於列表,不過有一點區別:一旦建立,元組中的數據在任何狀況下都不能改變字符串

在此輸入圖片描述

若是沒有冒號或者有多個冒號就會出錯,好比:get

Other Man: Now let's get one thing quite clear: I most definitely told you!

出錯信息以下(數據不符合指望的格式時會出現ValueError):it

在此輸入圖片描述

有太多冒號,不能賦給兩個變量。能夠設定split的第二個參數,控制將數據行分解爲多少個部分(學習使用help() BIF):io

在此輸入圖片描述

可是若是碰見空行,或者沒有冒號的又會出錯:

在此輸入圖片描述

這樣有兩種方法來解決:

  1. 添加邏輯,好比判斷是否有冒號
  2. 異常處理程序處理運行時錯誤

在本場景下,使用find()方法來添加邏輯,以下:

在此輸入圖片描述

not關鍵字將一個條件取反。

這樣能夠正確運行了,可是若是有其餘異常呢。並且這樣額外的邏輯,形成了代碼碎片。

處理異常

Rather than adding extra code and logic to guard against bad things happening, Python’s exception handling mechanism lets the error occur, spots that it has happened, and then gives you an opportunity to recover.

在此輸入圖片描述

當捕獲到異常後,不想處理,可使用pass

在此輸入圖片描述

pass語句就是Python的空語句或null語句,什麼也不作。

數據沒法正常訪問時會出現IOError,添加額外邏輯或者使用異常處理方式哪一種更好呢?

第一種使用os.path.exists(filename)方法判斷文件是否存在,第二種不判斷,由異常直接處理。

在此輸入圖片描述

Concentrate on what your code needs to do. 要重點關注你的代碼須要作什麼。

專一於業務須要,那些額外的邏輯雖然能保證程序正確執行,但並非必須的,使用異常處理能夠很好的避免多餘的判斷等。

特定指定異常

在此輸入圖片描述

相關文章
相關標籤/搜索