這篇文章主要介紹“python文件處理的方法”,在日常操作中,相信很多人在python文件處理的方法問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”python文件處理的方法”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),黎平企業(yè)網(wǎng)站建設(shè),黎平品牌網(wǎng)站建設(shè),網(wǎng)站定制,黎平網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,黎平網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
python open()方法用于打開一個(gè)文件,并返回文件對(duì)象,在對(duì)文件處理的過程中都需要用到這個(gè)函數(shù),如果文件無法打開,會(huì)拋出OSError。
注意:使用open()方法的時(shí)候一定到保證關(guān)閉文件對(duì)象,文件里面的內(nèi)容才會(huì)被保存,關(guān)閉文件需要調(diào)用close()方法。
open()方法常用的形式是接收兩個(gè)參數(shù):文件名(file)和模式(mode)
open(file,mode='r')
open(file,mode='r',buffering=1,encoding=None,errors=None,newline=None,closefd=True)
file: 必須的,表示某個(gè)路徑下文件名(可以是相對(duì)路徑,也可以是絕對(duì)路徑) mode:可選參數(shù),文件打開的模式 buffering: 設(shè)置緩沖 encoding: 編碼,一般用utf8 errors: 報(bào)錯(cuò)級(jí)別 newline:區(qū)分換行符 closefd:傳入的file參數(shù)類型
mode表示文件打開模式,有幾種模式呢?參考如下:
r: 以只讀的方式打開文件。文件的指針將會(huì)放到文件的開頭。這是文件默認(rèn)的打開模式 w: 打開一個(gè)文件只能用于寫入。如果文件存在則打開文件,并且從頭開始編輯,文件原有的內(nèi)容會(huì)被清空。如果文件不存在,則會(huì)創(chuàng)建新的文件 a: 打開一個(gè)文件用于在里面追加內(nèi)容。如果文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾。也就是新的內(nèi)容會(huì)被寫道已有的內(nèi)容之后。如果該文件不存在的話,創(chuàng)建新文件進(jìn)行寫入 r+:打開一個(gè)文件用于讀寫,文件指針將會(huì)放在文件的開頭 a+: 打開一個(gè)文件用于讀寫,如果文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾,文件打開時(shí)回事追加模式,如果該文件不存在,創(chuàng)建新的文件用于讀寫 w+: 打開一個(gè)文件用于讀寫。如果該文件已經(jīng)存在,則打開已經(jīng)存在文件,并且從頭開始編輯,即原有的內(nèi)容會(huì)被刪除。如果該文件不存在,則創(chuàng)建新文件 b: 二進(jìn)制文件 rb:以二進(jìn)制格式打開一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開頭。這是默認(rèn)的模式,一般用于非文本文件,如圖片,視頻等 wb: 以二進(jìn)制格式打開一個(gè)文件只用于寫入。如果該文件已經(jīng)存在則打開文件,并從文件的開頭開始編輯,即原有的內(nèi)容會(huì)被刪除,如果該文件不存在,創(chuàng)建新文件。一般用于非文本文件,如圖片,視頻等 ab:以二進(jìn)制格式打開一個(gè)文件用于追加,如果該文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾,也就是說,新的內(nèi)容將會(huì)被寫道已有的內(nèi)容之后,如果該文件不存在,則創(chuàng)建新的文件并寫入 ab+:以二進(jìn)制格式打開一個(gè)文件用于追加,如果該文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾,如果該文件不存在,創(chuàng)建新的文件用于讀寫
例1:以w模式打開文件
f = open('myfile.txt', 'w') f.write('hello,world!') f.close() ##輸出結(jié)果 在當(dāng)前路徑下成一個(gè)myfile.txt文件,并且把'hello world'寫到該文件 myfile.txt內(nèi)容如下: hello,world!
例2: 以a模式打開文件
f=open('myfile.txt','a') f.write('\ngood lucky') f.close() ##輸出結(jié)果: 會(huì)在文件末尾追加內(nèi)容,不會(huì)覆蓋原來的內(nèi)容 myfile.txt內(nèi)容如下: hello,world! good,lucky!
例3: 再以w模式打開文件,會(huì)把原來內(nèi)容覆蓋掉
f = open('myfile.txt', 'w') f.write('welcome!') f.close() ##輸出內(nèi)容: myfile.txt內(nèi)容如下: welcome!
例4: 以r的模式讀文件
f = open('myfile.txt', 'r') #以r模式讀文件,再往里面write會(huì)報(bào)錯(cuò) f.write('\nhello!') f.close() ## 輸出內(nèi)容: f.write('\nhello!') io.UnsupportedOperation: not writable
例5: 以r+的模式讀文件
f = open('myfile.txt', 'r+') f.write('\nhello!') f.close() ##輸出結(jié)果 r+:打開一個(gè)文件用于讀寫,文件指針將會(huì)放在文件的開頭 myfile.txt內(nèi)容: 1--------------> 此處表示空行 2hello!
例6: 以w+模式寫文件
f = open('myfile.txt', 'w+') f.write('love!') f.close() ##輸出結(jié)果: 如果該文件已經(jīng)存在,則打開已經(jīng)存在文件,并且從頭開始編輯,即原有的內(nèi)容會(huì)被刪除。如果該文件不存在,則創(chuàng)建新文件。 myfile.txt內(nèi)容: love!
read()方法
讀取文件中的所有內(nèi)容,讀取之后光標(biāo)移動(dòng)到文件末尾。 必須以r或r+模式,才可以使用read()。
例7: 以w+模式寫文件,再以r+模式來讀取文件內(nèi)容
f = open('myfile.txt', 'w+') f.write('hello,world!\ngood,lucky!!') f.close() ##輸出結(jié)果: w+ 如果該文件已經(jīng)存在,則打開已經(jīng)存在文件,并且從頭開始編輯,即原有的內(nèi)容會(huì)被刪除。如果該文件不存在,則創(chuàng)建新文件。 myfile.txt內(nèi)容: hello,world! good,lucky!!
f = open('myfile.txt', 'r+') # print(f.read()) ##輸出結(jié)果: hello,world! good,lucky!!
例8:以r+模式寫文件,再來讀取文件
f = open('myfile.txt', 'r+') #以r+的模式,會(huì)將文件指針放在開頭,然后將指定字符替換掉文件中原來的字符 f.write('\nwelcom') print(f.read()) ##輸出結(jié)果: rld! good,lucky!! #myfile.txt內(nèi)容如下: 1----------->空行 2welcomrld! 3good,lucky!!
readlines()方法readlines()一行行讀文件 例9:
f = open('myfile.txt', 'r+') print(f.readline()) print(f.readline()) print(f.readline()) ##輸出結(jié)果 welcomrld! good,lucky!!
readlines()一行行讀取文件內(nèi)容,然后存放在列表中,可以讀取所有行的內(nèi)容,每行的內(nèi)容都作為列表中的一個(gè)元素存在列表里,并且返回一個(gè)列表。 這個(gè)列表可以使用for..in 結(jié)構(gòu)進(jìn)行處理。 如果碰到EOF結(jié)束符,則返回空字符。
例10:
f = open('myfile.txt', 'r') print(f.readlines()) ##輸出內(nèi)容: ['\n', 'welcomrld!\n', 'good,lucky!!'] f = open('myfile.txt', 'r') for i in f.readlines(): i = i.strip() # 去掉空格,如\n換行符 print(i) ##輸出內(nèi)容: ----------->空行 welcomrld! good,lucky!!
seek()方法
seek() 用于移動(dòng)文件讀取指針到指定位置 語法如下:f.seek(offset,[,whence]) offset--開始的偏移量,也就是代表需要移動(dòng)偏移的字節(jié)數(shù),如果是負(fù)數(shù),表示從倒數(shù)第幾位開始 whence--可選參數(shù),默認(rèn)是0。給offset定義一個(gè)參數(shù),表示從哪個(gè)位置開始偏移;0代表從文件開頭算起;1代表從當(dāng)前位置開始算起;2代表從文件末尾算起。
如果操作成功,則返回新的文件位置;如果操作失敗,返回-1
例11:
f = open('workfile.txt', 'wb+') print(f.write(b'0123456789abcde')) f.seek(5) print(f.read(1)) f.seek(-3,2) print(f.read(1)) ##輸出結(jié)果: 15 b'5' b'c' workfile.txt內(nèi)容如下: 0123456789abcde
例12:
f = open('myfile.txt', 'r') print('filename is :',f.name) line=f.readline().strip() ##去掉\n print('第一次讀取的數(shù)據(jù)是%s' % (line)) f.seek(0, 0) ##第一個(gè)0表示偏移量為0,第二個(gè)0表示從文件頭開始偏移 line=f.readline().strip() print('第二次讀取的數(shù)據(jù)是%s' % (line)) ##輸出內(nèi)容: filename is : myfile.txt 第一次讀取的數(shù)據(jù)是good,lucky!! 第二次讀取的數(shù)據(jù)是good,lucky!! myfile.txt內(nèi)容如下: good,lucky!!
##去掉 f.seek(0, 0),運(yùn)行結(jié)果如下: f = open('myfile.txt', 'r') print('filename is :',f.name) line=f.readline().strip() print('第一次讀取的數(shù)據(jù)是%s' % (line)) line=f.readline().strip() print('第二次讀取的數(shù)據(jù)是%s' % (line)) ##運(yùn)行結(jié)果如下: filename is : myfile.txt 第一次讀取的數(shù)據(jù)是good,lucky!! 第二次讀取的數(shù)據(jù)是
tell()函數(shù)
返回文件的當(dāng)前位置
參考: https://www.runoob.com/python/file-tell.html
f = open('myfile.txt', 'r+') print('filename is :', f.name) line=f.readline() print('讀取的數(shù)據(jù)是%s' % (line)) line1=f.readline() print('讀取的數(shù)據(jù)是%s' % (line1)) pos=f.tell() print('current position is %d:' % (pos) ) f.close() ##輸出結(jié)果 filename is : myfile.txt 讀取的數(shù)據(jù)是good,lucky!! 讀取的數(shù)據(jù)是 current position is 12: myfile.txt內(nèi)容如下: good,lucky!! ##輸出結(jié)果 filename is : myfile.txt 讀取的數(shù)據(jù)是good,lucky!! 讀取的數(shù)據(jù)是g current position is 15: myfile.txt內(nèi)容如下: good,lucky!! g
到此,關(guān)于“python文件處理的方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!