Python进阶【第七篇】文件处理
一、文件操作
在Python中,文件讀寫是最常見的操作。對(duì)文件的操作為:
#1. 打開文件,得到文件句柄并賦值給一個(gè)變量 f=open('a.txt','r',encoding='utf-8') #默認(rèn)打開模式就為r#2. 通過句柄對(duì)文件進(jìn)行操作,f就是文件的句柄 data=f.read()#3. 關(guān)閉文件 f.close()操作系統(tǒng)打開該文件,并返回一個(gè)文件句柄給應(yīng)用程序
應(yīng)用程序?qū)⑽募浔x值給變量f
二、文件的讀寫模式
文件的一般打開模式:
文件句柄 = open('文件路徑', '模式')?需要注意的是,文件路徑處應(yīng)該填文件的相對(duì)路徑,當(dāng)程序所操作的文件對(duì)象與該程序在同一目錄文件下時(shí),可以直接用文件名。
要寫入特定編碼的文本文件,請(qǐng)給open()函數(shù)傳入encoding參數(shù),將字符串自動(dòng)轉(zhuǎn)換成指定編碼。
文件的處理模式可以是以下方式以及他們之間的組合:
| Character | Meaning |
| ‘r' | open for reading (default) |
| ‘w' | open for writing, truncating the file first |
| ‘a(chǎn)' | open for writing, appending to the end of the file if it exists |
| ‘b' | binary mode |
| ‘t' | text mode (default) |
| ‘+' | open a disk file for updating (reading and writing) |
| ‘U' | universal newline mode (for backwards compatibility; should not be used in new code) |
?
?
?
?
?
?
?
?
?
#1. 打開文件的模式有(默認(rèn)為文本模式): r ,只讀模式【默認(rèn)模式,文件必須存在,不存在則拋出異常】 w,只寫模式【不可讀;不存在則創(chuàng)建;存在則清空內(nèi)容】 a, 之追加寫模式【不可讀;不存在則創(chuàng)建;存在則只追加內(nèi)容】#2. 對(duì)于非文本文件,我們只能使用b模式,"b"表示以字節(jié)的方式操作(而所有文件也都是以字節(jié)的形式存儲(chǔ)的,使用這種模式無需考慮文本文件的字符編碼、圖片文件的jgp格式、視頻文件的avi格式) rb wb ab 注:以b方式打開時(shí),讀取到的內(nèi)容是字節(jié)類型,寫入時(shí)也需要提供字節(jié)類型,不能指定編碼#3. 了解部分 "+" 表示可以同時(shí)讀寫某個(gè)文件 r+, 讀寫【可讀,可寫】 w+,寫讀【可讀,可寫】 a+, 寫讀【可讀,可寫】x, 只寫模式【不可讀;不存在則創(chuàng)建,存在則報(bào)錯(cuò)】 x+ ,寫讀【可讀,可寫】 xb?三、文件的操作方法
#掌握 f.read() #讀取所有內(nèi)容,光標(biāo)移動(dòng)到文件末尾 f.readline() #讀取一行內(nèi)容,光標(biāo)移動(dòng)到第二行首部 f.readlines() #讀取每一行內(nèi)容,存放于列表中f.write('1111\n222\n') #針對(duì)文本模式的寫,需要自己寫換行符 f.write('1111\n222\n'.encode('utf-8')) #針對(duì)b模式的寫,需要自己寫換行符 f.writelines(['333\n','444\n']) #文件模式 f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式#了解 f.readable() #文件是否可讀 f.writable() #文件是否可讀 f.closed #文件是否關(guān)閉 f.encoding #如果文件打開模式為b,則沒有該屬性 f.flush() #立刻將文件內(nèi)容從內(nèi)存刷到硬盤 f.name?注意:文件沒有修改這一說,只能是新數(shù)據(jù)覆蓋原數(shù)據(jù)
四、文件中的光標(biāo)移動(dòng)
1.read(3):
1. 文件打開方式為文本模式時(shí),代表讀取3個(gè)字符
2. 文件打開方式為b模式時(shí),代表讀取3個(gè)字節(jié)
2.?除read()以外,其余的文件內(nèi)光標(biāo)移動(dòng)都是以字節(jié)為單位如seek,tell,truncate
注意:
1. seek有三種移動(dòng)方式0,1,2,其中1和2必須在b模式下進(jìn)行,但無論哪種模式,都是以bytes為單位移動(dòng)的
2. truncate是截?cái)辔募?#xff0c;所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因?yàn)槟菢又苯忧蹇瘴募?#xff0c;所以truncate要在r+或a或a+等模式下測(cè)試效果
?
轉(zhuǎn)載于:https://www.cnblogs.com/bep-feijin/p/8713437.html
總結(jié)
以上是生活随笔為你收集整理的Python进阶【第七篇】文件处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python子进程模块subproces
- 下一篇: The Hystrix timeout