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
可是若是碰見空行,或者沒有冒號的又會出錯:
這樣有兩種方法來解決:
在本場景下,使用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)
方法判斷文件是否存在,第二種不判斷,由異常直接處理。
專一於業務須要,那些額外的邏輯雖然能保證程序正確執行,但並非必須的,使用異常處理能夠很好的避免多餘的判斷等。