讀寫文件是最常見的IO操作。Python內(nèi)置了讀寫文件的函數(shù),用法和C是兼容的。
讀寫文件前,我們先必須了解一下,在磁盤上讀寫文件的功能都是由操作系統(tǒng)提供的,現(xiàn)代操作系統(tǒng)不允許普通的程序直接操作磁盤,所以,讀寫文件就是請求操作系統(tǒng)打開一個(gè)文件對(duì)象(通常稱為文件描述符),然后,通過操作系統(tǒng)提供的接口從這個(gè)文件對(duì)象中讀取數(shù)據(jù)(讀文件),或者把數(shù)據(jù)寫入這個(gè)文件對(duì)象(寫文件)。
一、文件操作流程
打開文件,得到文件句柄并賦值給一個(gè)變量
通過句柄對(duì)文件進(jìn)行操作
關(guān)閉文件(用with語法可免)
二、常規(guī)操作

read()
<b>調(diào)用read()會(huì)一次性讀取文件的全部內(nèi)容,如果文件有10G,內(nèi)存就爆了,所以,要保險(xiǎn)起見,可以反復(fù)調(diào)用read(size)方法,每次最多讀取size個(gè)字節(jié)的內(nèi)容。另外,調(diào)用readline()可以每次讀取一行內(nèi)容,調(diào)用readlines()一次讀取所有內(nèi)容并按行返回list。因此,要根據(jù)需要決定怎么調(diào)用。
讀取總結(jié):如果文件很小,read()一次性讀取最方便;如果不能確定文件大小,反復(fù)調(diào)用read(size)比較保險(xiǎn);如果是配置文件,調(diào)用readlines()最方便
三、open的打開模式
打開文件的模式有:
r,只讀模式(默認(rèn))。
w,只寫模式?!静豢勺x;不存在則創(chuàng)建;存在則刪除內(nèi)容;】
a,追加模式?!究勺x; 不存在則創(chuàng)建;存在則只追加內(nèi)容;】
"+" 表示可以同時(shí)讀寫某個(gè)文件
r+,可讀寫文件?!究勺x;可寫;可追加】
w+,寫讀
a+,同a
"U"表示在讀取時(shí),可以將 \r \n \r\n自動(dòng)轉(zhuǎn)換成 \n (與 r 或 r+ 模式同使用)
rU
r+U
"b"表示處理二進(jìn)制文件(如:FTP發(fā)送上傳ISO鏡像文件,linux可忽略,windows處理二進(jìn)制文件時(shí)需標(biāo)注)
rb
wb
ab
四、with語句
文件讀寫結(jié)束后務(wù)必要調(diào)用f.close()來關(guān)閉文件。當(dāng)我們寫文件時(shí),操作系統(tǒng)往往不會(huì)立刻把數(shù)據(jù)寫入磁盤,而是放到內(nèi)存緩存起來,空閑的時(shí)候再慢慢寫入。只有調(diào)用close()方法時(shí),操作系統(tǒng)才保證把沒有寫入的數(shù)據(jù)全部寫入磁盤。忘記調(diào)用close()的后果是數(shù)據(jù)可能只寫了一部分到磁盤,剩下的丟失了。使用with語句,可避免這樣的錯(cuò)誤

五、examples
Tips:python修改文件時(shí),使用w模式會(huì)將原本的文件清空/覆蓋。可以先用讀(r)的方式打開,寫到內(nèi)存中,然后再用寫(w)的方式打開。
需求:實(shí)現(xiàn)sed簡單替換功能
定義一個(gè)函數(shù),帶有4個(gè)參數(shù)
x 表示要更新的文件名稱
y 表示要被替換的內(nèi)容
z 表示 替換后的內(nèi)容
s 默認(rèn)參數(shù)為 1 表示只替換第一個(gè)匹配到的字符串
如果參數(shù)為 s = 'g' 則表示全文替換

六、替換文件的兩種方法
python修改文件時(shí),使用w模式會(huì)將原本的文件清空/覆蓋??梢韵扔米x(r)的方式打開,寫到內(nèi)存中,然后再用寫(w)的方式打開。
(1)把文件寫進(jìn)內(nèi)存之后在修改

(2)讀取原文件并將新內(nèi)容寫在新文件中
