你还在为文件读写而烦恼?Python已经轻松帮你解决了(建议收藏)
不管是Java還是Python,都有相關(guān)文件讀寫操作!
很多小伙伴們都困擾于讀寫文件的各種模式(如閱讀、寫入、追加等),以及搞不清open、read、readline、readlines、write等方法的使用。
寫這篇文章就是要告訴伙伴們Python文件讀寫的方式!
學(xué)習(xí)python中有什么不懂的地方,小編這里推薦加小編的python學(xué)習(xí)群:895,817, 687
有任何不懂的都可以在里面交流,還有很好的視頻教程pdf學(xué)習(xí)資料,大家一起學(xué)習(xí)交流!
open函數(shù)
如果你想用python讀取文件(如txt、csv等),第一步要用open函數(shù)打開文件。open()是python的內(nèi)置函數(shù),它會(huì)返回一個(gè)文件對(duì)象,這個(gè)文件對(duì)象擁有read、readline、write、close等方法。
open函數(shù)有兩個(gè)參數(shù):
- open(‘file’,‘mode’)
參數(shù)解釋
- file:需要打開的文件路徑
- mode(可選):打開文件的模式,如只讀、追加、寫入等
mode常用的模式:
- r:表示文件只能讀取
- w:表示文件只能寫入
- a:表示打開文件,在原有內(nèi)容的基礎(chǔ)上追加內(nèi)容,在末尾寫入
- w+:表示可以對(duì)文件進(jìn)行讀寫雙重操作
mode參數(shù)可以省略不填,默認(rèn)為r模式mode參數(shù)還可以指定以什么樣的編碼方式讀寫文本,默認(rèn)情況下open是以文本形式打開文件的,比如上面的四種mode模式。
當(dāng)你需要以字節(jié)(二進(jìn)制)形式讀寫文件時(shí),只需要在mode參數(shù)中追加’b’即可:
- rb:以二進(jìn)制格式打開一個(gè)文件,用于只讀
- wb:以二進(jìn)制格式打開一個(gè)文件,用于只寫
- ab:以二進(jìn)制格式打開一個(gè)文件,用于追加
- wb+:以二進(jìn)制格式打開一個(gè)文件,用于讀寫
當(dāng)你在默認(rèn)模式下讀取文本文件時(shí)(二進(jìn)制文件不可以),文件中的換行符會(huì)轉(zhuǎn)換為’\n’形式。
相反,在默認(rèn)模式下寫入文件時(shí),文本中的’\n’會(huì)轉(zhuǎn)換為換行符。
也就是說,你讀取的txt文本,其中換行符會(huì)以’\n’形式出現(xiàn),寫入txt文本時(shí),文本中的’\n’會(huì)變成換行指令。
with 關(guān)鍵字
在打開文件時(shí),很多人通常直接用open(‘file’),這樣并不酷。最好使用 with 關(guān)鍵字。優(yōu)點(diǎn)是當(dāng)子句體結(jié)束后文件會(huì)正確關(guān)閉,即使在某個(gè)時(shí)刻引發(fā)了異常。
with open(‘workfile’) as f:
… read_data = f.read()
f.closed
True
close()方法
打開文件并處理完畢后,需要關(guān)閉文件,這里用到close方法。
f.close() 用來關(guān)閉文件并立即釋放它使用的所有系統(tǒng)資源。如果你沒有顯式地關(guān)閉文件,Python的垃圾回收器最終將銷毀該對(duì)象并為你關(guān)閉打開的文件,但這個(gè)文件可能會(huì)保持打開狀態(tài)一段時(shí)間。
應(yīng)該要養(yǎng)成使用close()的習(xí)慣。
使用方法很簡單:
f = open(file) # 打開文件
f.close() # 關(guān)閉文件
read()方法
當(dāng)使用open函數(shù)打開文件后,就可以使用該文件對(duì)象的各種方法了,read就是其中一種。
read()會(huì)讀取一些數(shù)據(jù)并將其作為字符串(在文本模式下)或字節(jié)對(duì)象(在二進(jìn)制模式下)返回。
read方法有一個(gè)參數(shù):
f.read(size) # f為文件對(duì)象
參數(shù)size(可選)為數(shù)字,表示從已打開文件中讀取的字節(jié)計(jì)數(shù),默認(rèn)情況下為讀取全部。假設(shè)有一個(gè)文件sample1.txt,內(nèi)容如下:
This is python big data analysis!現(xiàn)在讀取該文件:
with open('sample1.txt') as f: content = f.read()print(content)f.close()輸出:
readline()方法
readline方法從文件中讀取整行,包括換行符’\n’。
換行符(\n)留在字符串的末尾,如果文件不以換行符結(jié)尾,則在文件的最后一行省略,這使得返回值明確無誤。
如果 f.readline() 返回一個(gè)空的字符串,則表示已經(jīng)到達(dá)了文件末尾,而空行使用 ‘\n’ 表示,該字符串只包含一個(gè)換行符。
f.readline()有一個(gè)參數(shù):
f.readline(size)
參數(shù)size表示從文件讀取的字節(jié)數(shù)。
假設(shè)有一個(gè)文件sample2.txt,共三行,內(nèi)容如下:
hello,my friends! This is python big data analysis, let's study.我要用readline函數(shù)讀取該文件:
with open('a.txt') as f:print(f.readline())print(f.readline(5))f.close()輸出:
readline方法會(huì)記住上一個(gè)readline函數(shù)讀取的位置,接著讀取下一行。
所以當(dāng)你需要遍歷文件每一行的時(shí)候,不妨使用readline方法吧!
readlines方法
readlines方法和readline方法長得像,但功能不一樣,前面說過readline方法只讀取一行,readlines方法則是讀取所有行,返回的是所有行組成的列表。
readlines方法沒有參數(shù),使用更加簡單。依舊以sample2.txt為例:
with open('a.txt') as f:print(f.readlines())f.close()輸出:
write方法
write方法顧名思義,就是將字符串寫入到文件里。
它只有一個(gè)參數(shù):
f.write([str]) # f為文件對(duì)象
參數(shù)[str]代表要寫入的字符串
使用起來也很簡單,比如將下面字符串(注意里面的轉(zhuǎn)行符’\n’)
'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()輸出:
結(jié)語
本文講解了python文本讀寫open、close、read、readline、readlines、write函數(shù)方法的使用,你會(huì)用了嗎?
總結(jié)
以上是生活随笔為你收集整理的你还在为文件读写而烦恼?Python已经轻松帮你解决了(建议收藏)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python果然不得了,数独都能轻松解决
- 下一篇: 自从Python数据可视化出了这个模块后