在使用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+:以二進位制格式開啟一個檔案,用於讀寫
當你在預設模式下讀取文字檔案時(二進位制檔案不可以),檔案中的換行符會轉換為‘\n’形式。
相反,在預設模式下寫入檔案時,文字中的‘\n’會轉換為換行符。
也就是說,你讀取的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()
輸出:
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()
輸出:
readline方法會記住上一個readline函式讀取的位置,接著讀取下一行。
所以當你需要遍歷檔案每一行的時候,不妨使用readline方法吧!
05
readlines方法
readlines方法和readline方法長得像,但功能不一樣,前面說過readline方法只讀取一行,readlines方法則是讀取所有行,返回的是所有行組成的列表。
readlines方法沒有引數,使用更加簡單。
依舊以sample2。txt為例
with open(’a。txt‘) as f: print(f。readlines()) f。close()
輸出:
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文字讀寫open、close、read、readline、readlines、write函式方法的使用,你會用了嗎?