佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > python基礎(chǔ)之文件處理知識(shí)總結(jié)

python基礎(chǔ)之文件處理知識(shí)總結(jié)

熱門標(biāo)簽:呼叫中心市場(chǎng)需求 企業(yè)做大做強(qiáng) 電話運(yùn)營(yíng)中心 客戶服務(wù) 硅谷的囚徒呼叫中心 語(yǔ)音系統(tǒng) Win7旗艦版 百度AI接口

一、open()方法

python open()方法用于打開(kāi)一個(gè)文件,并返回文件對(duì)象,在對(duì)文件處理的過(guò)程中都需要用到這個(gè)函數(shù),如果文件無(wú)法打開(kāi),會(huì)拋出OSError。

注意:使用open()方法的時(shí)候一定到保證關(guān)閉文件對(duì)象,文件里面的內(nèi)容才會(huì)被保存,關(guān)閉文件需要調(diào)用close()方法。

open()方法常用的形式是接收兩個(gè)參數(shù):文件名(file)和模式(mode)

基本語(yǔ)法

open(file,mode='r')

完整的語(yǔ)法:

open(file,mode='r',buffering=1,encoding=None,errors=None,newline=None,closefd=True)

參數(shù)說(shuō)明:

  • file: 必須的,表示某個(gè)路徑下文件名(可以是相對(duì)路徑,也可以是絕對(duì)路徑) 
  • mode:可選參數(shù),文件打開(kāi)的模式    
  • buffering: 設(shè)置緩沖
  • encoding: 編碼,一般用utf8
  • errors: 報(bào)錯(cuò)級(jí)別
  • newline:區(qū)分換行符
  • closefd:傳入的file參數(shù)類型

mode表示文件打開(kāi)模式,有幾種模式呢?參考如下:

  • r: 以只讀的方式打開(kāi)文件。文件的指針將會(huì)放到文件的開(kāi)頭。這是文件默認(rèn)的打開(kāi)模式
  • w:  打開(kāi)一個(gè)文件只能用于寫入。如果文件存在則打開(kāi)文件,并且從頭開(kāi)始編輯,文件原有的內(nèi)容會(huì)被清空。如果文件不存在,則會(huì)創(chuàng)建新的文件
  • a:  打開(kāi)一個(gè)文件用于在里面追加內(nèi)容。如果文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾。也就是新的內(nèi)容會(huì)被寫道已有的內(nèi)容之后。如果該文件不存在的話,創(chuàng)建新文件進(jìn)行寫入
  • r+:打開(kāi)一個(gè)文件用于讀寫,文件指針將會(huì)放在文件的開(kāi)頭
  • a+: 打開(kāi)一個(gè)文件用于讀寫,如果文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾,文件打開(kāi)時(shí)回事追加模式,如果該文件不存在,創(chuàng)建新的文件用于讀寫
  • w+: 打開(kāi)一個(gè)文件用于讀寫。如果該文件已經(jīng)存在,則打開(kāi)已經(jīng)存在文件,并且從頭開(kāi)始編輯,即原有的內(nèi)容會(huì)被刪除。如果該文件不存在,則創(chuàng)建新文件
  • b: 二進(jìn)制文件
  • rb:以二進(jìn)制格式打開(kāi)一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)的模式,一般用于非文本文件,如圖片,視頻等
  • wb: 以二進(jìn)制格式打開(kāi)一個(gè)文件只用于寫入。如果該文件已經(jīng)存在則打開(kāi)文件,并從文件的開(kāi)頭開(kāi)始編輯,即原有的內(nèi)容會(huì)被刪除,如果該文件不存在,創(chuàng)建新文件。一般用于非文本文件,如圖片,視頻等
  • ab:以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加,如果該文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾,也就是說(shuō),新的內(nèi)容將會(huì)被寫道已有的內(nèi)容之后,如果該文件不存在,則創(chuàng)建新的文件并寫入
  • ab+:以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加,如果該文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾,如果該文件不存在,創(chuàng)建新的文件用于讀寫

例1:以w模式打開(kāi)文件

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模式打開(kāi)文件

f=open('myfile.txt','a')
f.write('\ngood lucky')
f.close()
 
##輸出結(jié)果:
會(huì)在文件末尾追加內(nèi)容,不會(huì)覆蓋原來(lái)的內(nèi)容
 
myfile.txt內(nèi)容如下:
hello,world!
good,lucky!

例3: 再以w模式打開(kāi)文件,會(huì)把原來(lái)內(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+:打開(kāi)一個(gè)文件用于讀寫,文件指針將會(huì)放在文件的開(kāi)頭
 
myfile.txt內(nèi)容:
1--------------> 此處表示空行
2hello!

例6: 以w+模式寫文件

f = open('myfile.txt', 'w+')
f.write('love!')
f.close()
 
##輸出結(jié)果:
如果該文件已經(jīng)存在,則打開(kāi)已經(jīng)存在文件,并且從頭開(kāi)始編輯,即原有的內(nèi)容會(huì)被刪除。如果該文件不存在,則創(chuàng)建新文件。
 
myfile.txt內(nèi)容:
love!

二、read()方法

讀取文件中的所有內(nèi)容,讀取之后光標(biāo)移動(dòng)到文件末尾。 必須以r或r+模式,才可以使用read()。

例7: 以w+模式寫文件,再以r+模式來(lái)讀取文件內(nèi)容

f = open('myfile.txt', 'w+')
f.write('hello,world!\ngood,lucky!!')
f.close()
 
##輸出結(jié)果:
w+ 如果該文件已經(jīng)存在,則打開(kāi)已經(jīng)存在文件,并且從頭開(kāi)始編輯,即原有的內(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+模式寫文件,再來(lái)讀取文件

f = open('myfile.txt', 'r+') #以r+的模式,會(huì)將文件指針?lè)旁陂_(kāi)頭,然后將指定字符替換掉文件中原來(lái)的字符  
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)文件讀取指針到指定位置

語(yǔ)法如下:f.seek(offset,[,whence])
offset--開(kāi)始的偏移量,也就是代表需要移動(dòng)偏移的字節(jié)數(shù),如果是負(fù)數(shù),表示從倒數(shù)第幾位開(kāi)始
whence--可選參數(shù),默認(rèn)是0。給offset定義一個(gè)參數(shù),表示從哪個(gè)位置開(kāi)始偏移;0代表從文件開(kāi)頭算起;1代表從當(dāng)前位置開(kāi)始算起;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表示從文件頭開(kāi)始偏移
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基礎(chǔ)之文件處理知識(shí)總結(jié)的文章就介紹到這了,更多相關(guān)python文件處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python關(guān)于OS文件目錄處理的實(shí)例分享
  • python引入其他文件夾下的py文件具體方法
  • 解決python中os.system調(diào)用exe文件的問(wèn)題
  • python使用glob檢索文件的操作
  • 教你用Python代碼實(shí)現(xiàn)合并excel文件
  • python3 hdf5文件 遍歷代碼
  • Python基礎(chǔ)之元組與文件知識(shí)總結(jié)
  • python提取word文件中的所有圖片
  • python可視化hdf5文件的操作
  • Python 如何讀取.txt,.md等文本文件
  • 教你利用Python破解ZIP或RAR文件密碼
  • Python文件基本操作實(shí)用指南
  • Python爬蟲(chóng)之m3u8文件里提取小視頻的正確姿勢(shì)
  • python 如何把classification_report輸出到csv文件
  • 用python刪除文件夾中的重復(fù)圖片(圖片去重)
  • 將Python代碼打包成.exe可執(zhí)行文件的完整步驟
  • Python文件名的匹配之clob庫(kù)
  • python基礎(chǔ)學(xué)習(xí)之組織文件

標(biāo)簽:喀什 海南 山西 安康 長(zhǎng)沙 崇左 山西 濟(jì)南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python基礎(chǔ)之文件處理知識(shí)總結(jié)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    二连浩特市| 江安县| 军事| 临海市| 东台市| 夏河县| 富蕴县| 呼图壁县| 玉环县| 麻江县| 垦利县| 兰坪| 仁化县| 海宁市| 商水县| 天镇县| 沭阳县| 虎林市| 巫溪县| 昭平县| 朔州市| 余姚市| 凌源市| 探索| 岗巴县| 高雄市| 仪陇县| 葫芦岛市| 北川| 柳州市| 高雄市| 上思县| 辽阳县| 航空| 中山市| 扬州市| 舟曲县| 富裕县| 肇州县| 和平区| 乌海市|