
書(shū)籍:《Python編程:從入門到實(shí)踐》
打卡人:Owenli
打卡時(shí)間:2018.4.18
Python從入門到實(shí)踐目錄
- Python學(xué)習(xí)筆記之基本數(shù)據(jù)類型|第1篇
- Python學(xué)習(xí)筆記之列表|第2篇
- Python學(xué)習(xí)筆記之條件控制|第3篇
- Python學(xué)習(xí)筆記之字典|第4篇
- Python學(xué)習(xí)筆記之用戶輸入和While循環(huán)|第5篇
- Python學(xué)習(xí)筆記之函數(shù)|第6篇
- Python學(xué)習(xí)筆記之函數(shù)(續(xù))|第7篇
- Python學(xué)習(xí)筆記之類|第8篇
- Python學(xué)習(xí)筆記之類(續(xù))|第9篇
- Python學(xué)習(xí)筆記之文件和異常(上)|第10篇
- Python學(xué)習(xí)筆記之文件和異常(下)|第11篇
前言
本篇將學(xué)習(xí)處理文件,讓程序能夠快速地分析大量的數(shù)據(jù);還將學(xué)習(xí)錯(cuò)誤處理,避免程序在面對(duì)意外情形時(shí)崩潰;將學(xué)習(xí)異常,它們是Python創(chuàng)建的特殊對(duì)象,用于管理程序運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤;還將學(xué)習(xí)模塊json,能夠保存用戶數(shù)據(jù),以免程序停止時(shí)丟失。
下面開(kāi)始今天的學(xué)習(xí)吧?。。?/p>
一、文件中讀取數(shù)據(jù)
要使用文本文件中的信息,首先需要將信息從文件中讀取到內(nèi)存中。下面看看如何讀取文件。
1.1 讀取整個(gè)文件
首先創(chuàng)建一個(gè)文本文件pi_digits.txt。文件中包含圓周率小數(shù)點(diǎn)后30位,每10位換行。
pi_digits.txt
3.1415926535
8979323846
2643383279
下面程序打開(kāi)并讀取文件,將內(nèi)容顯示出來(lái)。

open():以某種方式打開(kāi)文件,上面中傳遞一個(gè)參數(shù),文件地址,函數(shù)返回一個(gè)表示文件的對(duì)象。
關(guān)鍵字with在不需要訪問(wèn)文件后將其關(guān)閉。也可以直接使用 close關(guān)閉文件,不過(guò)容易出問(wèn)題,不推薦使用。
read()方法,讀取文件的全部?jī)?nèi)容。
在輸出是可以使用rstrip()刪除字符串末尾的空白。
1.2 文件路徑
open()函數(shù)根據(jù)當(dāng)前執(zhí)行文件所在目錄查找需要打開(kāi)的文件。
有時(shí)需要打開(kāi)不在程序文件所屬目錄中的文件。讓Python打開(kāi)不與程序文件位于同一目錄中的文件,需要提供文件路徑。讓 Python到指定位置查找。
相對(duì)路徑:該路徑是相對(duì)于當(dāng)前運(yùn)行的程序所在目錄的。
絕對(duì)路徑:該路徑是文件在計(jì)算機(jī)中的準(zhǔn)確存儲(chǔ)位置。
1.3 逐行讀取
讀取文件時(shí),常常需要檢查其中的一行,你可能要在文件中查找特定的信息,或者要以某種方式修改文件中的文本。
下面例子,以一次一行的方式輸出文件內(nèi)容。

1.4 創(chuàng)建一個(gè)包含文件各行內(nèi)容的列表

readlines()從文件中讀取每一行,并將其中存儲(chǔ)在一個(gè)列表中。
Python對(duì)處理的數(shù)據(jù)量沒(méi)有限制,只要系統(tǒng)的內(nèi)存足夠多,處理多少數(shù)據(jù)都可以。
二、寫(xiě)入文件
保存數(shù)據(jù)最方便的方式之一是寫(xiě)入到文件中。
open()還提供了其他的參數(shù),控制文件讀取和寫(xiě)入模式。

打開(kāi)文件 時(shí),可指定讀取模式 ('r' )、寫(xiě)入模式 ('w' )、附加模式 ('a' )或讓你能夠讀取和寫(xiě)入文件的模式('r+' )。如果省略則會(huì)以默認(rèn)只讀模式打開(kāi)文件。
如果要寫(xiě)入的文件不存在,會(huì)自動(dòng)創(chuàng)建。
w模式,在寫(xiě)入時(shí),會(huì)清空之前的內(nèi)容。
a模式,追加模式寫(xiě)入,不會(huì)清空之前的數(shù)據(jù)。
三、異常
Python中稱為異常的特殊對(duì)象來(lái)管理程序執(zhí)行期間發(fā)生的錯(cuò)誤。每當(dāng)發(fā)生讓Python不知所措的錯(cuò)誤時(shí),它都會(huì)創(chuàng)建一個(gè)異常對(duì)象。如果你編寫(xiě)了處理該異常的代碼,程序?qū)⒗^
續(xù)運(yùn)行;如果你未對(duì)異常進(jìn)行處理,程序?qū)⑼V?,并顯示一個(gè)traceback,其中包含有關(guān)異常的報(bào)告。
3.1 處理ZeroDivisionError異常
該異常是除數(shù)為零異常。當(dāng)除數(shù)為零是就會(huì)拋出這個(gè)錯(cuò)誤。

3.2 使用try-except代碼塊
通過(guò)編寫(xiě)try-except代碼塊來(lái)處理可能引發(fā)的異常。try中執(zhí)行代碼,except中處理可能發(fā)生的異常。

3.3 else代碼塊
通過(guò)將可能引發(fā)錯(cuò)誤的代碼放在try-except代碼塊中,提高了程序抵御錯(cuò)誤的能力。
try-except-else其中else代碼塊依賴于try代碼塊執(zhí)行的代碼都應(yīng)放在else代碼塊中。
try-except-else 代碼塊的工作原理大致如下:Python嘗試執(zhí)行try 代碼塊中的代碼;只有可能引發(fā)異常的代碼才需要放在try 語(yǔ)句中。有時(shí)候,有一些僅在try 代碼塊成功 執(zhí)行時(shí)才需要運(yùn)行的代碼;這些代碼應(yīng)放在else 代碼塊中。except 代碼塊告訴Python,如果它嘗試運(yùn)行try代碼塊中的代碼時(shí)引發(fā)了指定的異常,該怎么辦。
四、小結(jié)
本篇主要學(xué)習(xí)文件讀和寫(xiě)的相關(guān)知識(shí),另外,還學(xué)習(xí)了關(guān)于異常的部分內(nèi)容。下篇將學(xué)習(xí)異常的剩余部分。