Python辦公自動化~一文搞懂Python檔案讀寫

在使用python程式設計時,經常會遇到

讀寫檔案

的操作。

很多童鞋困擾於讀寫檔案的各種模式(如閱讀、寫入、追加等),以及搞不清open、read、readline、readlines、write等方法的使用。

這篇文章就是要告訴你Python檔案讀寫的所有秘密!

01

open函式

如果你想用python讀取檔案(如txt、csv等),第一步要用open函式開啟檔案。

open()是python的內建函式,它會返回一個檔案物件,這個檔案物件擁有read、readline、write、close等方法。

open函式有兩個引數:

open(‘file’,‘mode’)

引數解釋

file:需要開啟的檔案路徑

mode(可選):開啟檔案的模式,如只讀、追加、寫入等

mode常用的模式:

r:表示檔案只能讀取

w:表示檔案只能寫入

a:表示開啟檔案,在原有內容的基礎上追加內容,在末尾寫入

w+:表示可以對檔案進行讀寫雙重操作

mode引數可以省略不填,預設為r模式

mode引數還可以指定以什麼樣的編碼方式讀寫文字,預設情況下open是以文字形式開啟檔案的,比如上面的四種mode模式。

當你需要以位元組(二進位制)形式讀寫檔案時,只需要在mode引數中追加‘b’即可:

rb:以二進位制格式開啟一個檔案,用於只讀

wb:以二進位制格式開啟一個檔案,用於只寫

ab:以二進位制格式開啟一個檔案,用於追加

wb+:以二進位制格式開啟一個檔案,用於讀寫

Python辦公自動化~一文搞懂Python檔案讀寫

當你在預設模式下讀取文字檔案時(二進位制檔案不可以),檔案中的換行符會轉換為‘\n’形式。

Python辦公自動化~一文搞懂Python檔案讀寫

相反,在預設模式下寫入檔案時,文字中的‘\n’會轉換為換行符。

Python辦公自動化~一文搞懂Python檔案讀寫

也就是說,你讀取的txt文字,其中換行符會以‘\n’形式出現,寫入txt文字時,文字中的‘\n’會變成換行指令。

with 關鍵字

在開啟檔案時,很多人通常直接用open(‘file’),這樣並不酷。

最好使用

with

關鍵字。優點是當子句體結束後文件會正確關閉,即使在某個時刻引發了異常。

>>> with open(‘workfile’) as f:。。。 read_data = f。read()>>> f。closedTrue

02

close方法

開啟檔案並處理完畢後,需要關閉檔案,這裡用到close方法。

f。close() 用來關閉檔案並立即釋放它使用的所有系統資源。

如果你沒有顯式地關閉檔案,Python的垃圾回收器最終將銷燬該物件併為你關閉開啟的檔案,但這個檔案可能會保持開啟狀態一段時間。

應該要養成使用close()的習慣。

使用方法很簡單:

f = open(file) # 開啟檔案f。close() # 關閉檔案

03

read方法

當使用open函式開啟檔案後,就可以使用該檔案物件的各種方法了,read就是其中一種。

read()

會讀取一些資料並將其作為字串(在文字模式下)或位元組物件(在二進位制模式下)返回。

read方法有一個引數:

f。read(size) # f為檔案物件

引數size(可選)為數字,表示從已開啟檔案中讀取的位元組計數,預設情況下為讀取全部。

假設有一個檔案sample1。txt,內容如下:

This is python big data analysis!

現在讀取該檔案:

with open(‘sample1。txt’) as f:content = f。read() print(content) f。close()

輸出:

Python辦公自動化~一文搞懂Python檔案讀寫

04

readline方法

readline方法從檔案中讀取整行,包括換行符‘\n’。

換行符(\n)留在字串的末尾,如果檔案不以換行符結尾,則在檔案的最後一行省略,這使得返回值明確無誤。

如果 f。readline() 返回一個空的字串,則表示已經到達了檔案末尾,而空行使用 ‘\n’ 表示,該字串只包含一個換行符。

f。readline()有一個引數:

f。readline(size)

引數size表示從檔案讀取的位元組數。

假設有一個檔案sample2。txt,共三行,內容如下:

hello,my friends!

This is python big data analysis,

let‘s study。

我要用readline函式讀取該檔案:

with open(’a。txt‘) as f: print(f。readline()) print(f。readline(5)) f。close()

輸出:

Python辦公自動化~一文搞懂Python檔案讀寫

readline方法會記住上一個readline函式讀取的位置,接著讀取下一行。

所以當你需要遍歷檔案每一行的時候,不妨使用readline方法吧!

05

readlines方法

readlines方法和readline方法長得像,但功能不一樣,前面說過readline方法只讀取一行,readlines方法則是讀取所有行,返回的是所有行組成的列表。

readlines方法沒有引數,使用更加簡單。

依舊以sample2。txt為例

with open(’a。txt‘) as f: print(f。readlines()) f。close()

輸出:

Python辦公自動化~一文搞懂Python檔案讀寫

06

write方法

write方法顧名思義,就是將字串寫入到檔案裡。

它只有一個引數:

f。write([str]) # f為檔案物件

引數[str]代表要寫入的字串

使用起來也很簡單,比如將下面字串

’hello,my friends!\nthis is python big data analysis‘

寫入到檔案sample3。txt裡。

with open(’sample3。txt‘,’w‘) as f: f。write(’hello,my friends!\nthis is python big data analysis‘) f。close()

輸出:

Python辦公自動化~一文搞懂Python檔案讀寫

結語:

本文講解了python文字讀寫open、close、read、readline、readlines、write函式方法的使用,你會用了嗎?