Python-10-檔案讀寫

讀檔案

當我們在工作中需要從檔案中獲取內容的時候,我們可以使用Python的內建方法open來完成。

第一步:開啟檔案

f = open(‘info。txt’)print(f)

Python-10-檔案讀寫

我們可以看到,預設的檔案開啟模式為‘r’,即只讀。

直接open會返回一個檔案物件。

獲取檔案物件內容

f = open(‘info。txt’)for i in f:    print(i)

Python-10-檔案讀寫

透過上面的結果,我們可以知道,檔案物件是一個可迭代的物件,透過for迴圈,我們就可以拿到其內容。

更優雅的讀取方式read

f = open(‘info。txt’)res = f。read(100)print(res)

read(count),我們傳入100,代表我們想要讀取100個位元組。

Python-10-檔案讀寫

更優雅的讀取方式readline

f = open(‘info。txt’)res = f。readline()print(res)

Python-10-檔案讀寫

如上可知,readline每次只讀取一行內容。

注意:readline在讀取一行後,檔案控制代碼會停留在上次讀取的位置,即透過多次readline可實現順序讀取。

readlines

當我們需要快速的讀取全部內容的時候,我們需要使用readlines

f = open(‘info。txt’)res = f。readlines()print(res)

Python-10-檔案讀寫

如上,readlines返回一個列表物件,我們可以透過遍歷列表即可讀取每一行的內容。

寫檔案

普通寫

我們已經知道預設的open是r模式,所以寫檔案就需要我們在開啟檔案的時候指定w模式,如果需要讀許可權,則要使用w+模式。

f = open(‘info。txt’,mode=‘w+’)f。write(‘hello,python測試和開發!’)res = f。readlines()print(res)

Python-10-檔案讀寫

為什麼讀取到的內容是空的呢?因為寫入的內容還在記憶體中,當你進行檔案關閉的時候才會寫入檔案。

f = open(‘info。txt’,mode=‘w+’)f。write(‘hello,python測試和開發!’)f。close()s = open(‘info。txt’)res = s。readlines()print(res)

Python-10-檔案讀寫

追加寫

f = open(‘info。txt’,mode=‘w+’)f。write(‘hello,python測試和開發!’)f。close()s = open(‘info。txt’,mode=‘w+’)s。write(‘ok’)s。close()m = open(‘info。txt’)res = m。readlines()print(res)

Python-10-檔案讀寫

注意:當我們以w+模式開啟檔案的時候,預設會清空檔案。如果需要追加內容到檔案,則需要採用a模式。

f = open(‘info。txt’,mode=‘w+’)f。write(‘hello,python測試和開發!’)f。close()s = open(‘info。txt’,mode=‘a’)s。write(‘ok’)s。close()m = open(‘info。txt’)res = m。readlines()print(res)

Python-10-檔案讀寫

如上,已經解決。

優雅的讀寫

以上面的操作,我們都需要開啟,讀寫,再關閉,有沒有一種方式可以不用這麼麻煩呢?

with關鍵字

其內部實現了__enter__和__exit__方法,我們可以直接使用with實現優雅的檔案開啟關閉處理。

with open(‘info。txt’,mode=‘w+’) as f:    f。write(‘hello,python測試和開發!’)

Python-10-檔案讀寫

怎麼樣,是不是很優雅!

附錄

幾種開啟檔案模式的區別

Python-10-檔案讀寫

幾種檔案物件的屬性

Python-10-檔案讀寫

所有的檔案開啟模式

Python-10-檔案讀寫

點選↓↓↓