天天看點

Python學習筆記——檔案讀寫

參見網易雲課堂“瘋狂的Python”第32課時

用Python 來進行檔案處理,有何意義?自然首先想到的是可以查找和更改檔案的屬性,分類和具體資訊。比如說分析log日志,用正則查詢log裡所需要的内容。比如說寫個簡單的防毒軟體,或者做一個檔案處理軟體等。

所涉及的内容如下:

Python學習筆記——檔案讀寫

1.檔案的打開和建立

打開需要用到file和open指令

比如說有一個檔案夾位于根目錄(/root)下(linux中檢視目前目錄用pwd指令),檔案名為new.txt。

進入python互動模式,當需要打開new.txt這個檔案時就需要用到以下指令:

f0=file(‘/root/new.txt’)

f0=open(‘/root/new.txt’)

這樣操作後就可以對其進行更進一步處理,要注意打開後要及時關閉,否則可能後續的寫入操作會将原檔案内容完全删除,關閉指令模式為:

f0.close

進一步的讀寫處理:

Python學習筆記——檔案讀寫

‘r’——隻讀,用法為:

f0=open(‘/root/new.txt’,’r’)

這裡檔案為隻讀模式,要檢視其内容輸入以下指令:

f0.read()

‘r+’——讀寫,用法為:

f0=open(‘/root/new.txt’,’r+’)

這裡檔案可讀可寫,但有個問題

假設new.txt中内容為字元串’hello,world!’

進入python互動模式,第一種情況:

f0=open(‘/root/new.txt’,’r+’)

f0.read()

hello,world! #輸出内容

f0.write(‘hello,everyone!’)

f0.close #關閉檔案

f0=open(‘/root/new.txt’) #再次打開

f0.read()

hello,world!hello,everyone!#輸出内容

第二種情況:

f0=open(‘/root/new.txt’,’r+’)

f0.write(‘happy’)

f0.close #關閉檔案

f0=open(‘/root/new.txt’,’r’) #再次打開

f0.read()

happy,world!hello,everyone!#輸出内容

對比可以看出,對于’r+’模式,先讀後寫與先寫後讀其輸出内容是不一緻的,前者作用在内容末尾,後者作用在内容開頭,并替換掉開頭的内容。二者的差别就在于指針上,前者先做讀取操作時,完後指針已經指到内容末尾,于是寫入操作從末尾開始。後者先做寫入操作時,指針預設從檔案初始内容處開始,并替換掉初始内容。

‘w’——寫入,用法為:

f0=open(‘/root/new.txt’,’r+’)

f0.write(‘good’)

f0.close

f0=open(‘/root/new.txt’)

f0.read()

good #輸出内容

原目錄沒有case.txt,這裡建立了一個case.txt檔案并寫入裡’good’字元串,但這裡在寫入不能立馬讀取,否則會報錯,需要再打開一次才行。

‘w+’——可讀可寫模式,這之後可以導入read()指令而不會像’w’那樣報錯,隻不過寫入參數再read後傳回值為空(未了解),但重新以’w+’模式打開後可以直接read到内容。

‘w’與’w+’共同點是會把原檔案删除并寫入新的内容(若write前先read則從檔案末尾開始寫)

‘a’與’a+’是’w’與’w+’的一個更新,二者自帶指針,而且都指向檔案末尾。

‘b’比較特殊,比如導入一個圖檔,就需要’b’模式,否則會出錯。

‘U’支援所有換行符号,不同的作業系統的換行符是不一樣的,該模式對這些系統的換行符号都可以支援。