python中open函數(shù)對(duì)文件處理的使用教程
在python中使用open函數(shù)對(duì)文件進(jìn)行處理。
1.open()
python打開文件使用open()函數(shù),返回一個(gè)指向文件的指針。該函數(shù)常用以下三個(gè)參數(shù)。
1.1 參數(shù)1
目標(biāo)文件的路徑+名字。最好使用r"路徑"這種原始字符串寫法,防止有轉(zhuǎn)義字符影響實(shí)際路徑。
1.2 參數(shù)2
操作文件的方式mode=‘方式’。mode=可以省略。下面對(duì)操作文件的方式進(jìn)行詳細(xì)說(shuō)明:
(1)r
以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。這是open默認(rèn)模式。如果文件不存在,會(huì)報(bào)錯(cuò)。
(2)rb
以二進(jìn)制只讀方式打開一個(gè)文件。文件指針將會(huì)放在文件的開頭。注意這種方式不能使用encoding,不然會(huì)報(bào)錯(cuò)。
同樣的內(nèi)容使用一般方式和二進(jìn)制的方式打開。
fp = open(r"E:\test.txt",'r',encoding='utf-8') content = fp.readline() print(content)
輸出:加油,好好干!
fp = open(r"E:\test.txt",'rb') content = fp.readline() print(content)
輸出:b’\xe5\x8a\xa0\xe6\xb2\xb9\xef\xbc\x8c\xe5\xa5\xbd\xe5\xa5\xbd\xe5\xb9\xb2\xef\xbc\x81’
(3)r+
以讀寫方式打開一個(gè)文件。文件指針將會(huì)放在文件的開頭。直接寫入會(huì)覆蓋文件開頭的內(nèi)容。
原始內(nèi)容:
加油,好好干!別放棄
fp = open(r"E:\test.txt",'r+',encoding='utf-8')
fp.write("開心吧")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
執(zhí)行后:
開心吧好好干!別放棄
(4)rb+
以二進(jìn)制讀寫方式打開一個(gè)文件。文件指針將會(huì)放在文件的開頭。
(5)w
以寫入打開一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。
(6)wb
以二進(jìn)制寫入方式打開一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。
(7)w+
以讀寫方式打開一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。
原始內(nèi)容:
開心吧好好干!別放棄
fp = open(r"E:\test.txt",'w+',encoding='utf-8')
fp.write("認(rèn)真一點(diǎn)")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
執(zhí)行后直接覆蓋所有原始內(nèi)容:
認(rèn)真一點(diǎn)
(8)wb+
以二進(jìn)制讀寫格式打開一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。
(9)a
以追加方式打開一個(gè)文件。如果文件已存在,文件指針將會(huì)放在文件結(jié)尾。即:新的內(nèi)容將會(huì)被追加到已有的內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件可用于寫入。注意,不能讀,讀會(huì)出錯(cuò)。
(10)a+
以讀寫方式打開一個(gè)文件。如果文件已存在,文件指針將會(huì)放在文件結(jié)尾。即:新的內(nèi)容將會(huì)被追加到已有的內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件可用于讀寫。
原始內(nèi)容:
認(rèn)真一點(diǎn)
fp = open(r"E:\test.txt",'a+',encoding='utf-8')
fp.write("你就離成功近一點(diǎn)")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
執(zhí)行后追加:
認(rèn)真一點(diǎn)你就離成功近一點(diǎn)
這時(shí)候,指針?lè)旁谖募膊浚苯幼x取會(huì)沒(méi)有內(nèi)容,需要將指針移動(dòng)(seek)到文件的頭部:
with open(r"E:\test.txt",'a+',encoding='utf-8') as fp:
fp.seek(0,0)
content = fp.readline()
print(content)
(11)ab+
以二進(jìn)制讀寫方式打開一個(gè)文件。如果文件已存在,文件指針將會(huì)放在文件結(jié)尾。即:新的內(nèi)容將會(huì)被追加到已有的內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件可用于讀寫。
1.3 參數(shù)3
編碼的方式,常用utf-8,gbk等。如:encoding=‘utf-8’
如果是二進(jìn)制的方式,這個(gè)參數(shù)不需要填,填了還會(huì)報(bào)錯(cuò)。
2.with open() as
這是open()的一種升級(jí)用法,控制塊結(jié)束的時(shí)候文件會(huì)自動(dòng)關(guān)閉,不需要顯示地調(diào)用close()關(guān)閉文件。這種方法更方便使用,所以推薦大家使用這種方法。
with open(r"E:\test.txt",'r',encoding='utf-8') as fp:
content = fp.readlines()
3.open函數(shù)常用的方法
3.1 讀
文件內(nèi)容:
認(rèn)真一點(diǎn)你就離成功近一點(diǎn)
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff
(1)read()
一次性讀取整個(gè)文件內(nèi)容,將整個(gè)文件放到一個(gè)字符串中。使用read(size)方法,返回文件中的前size個(gè)字符:
content = fp.read()
輸出:
認(rèn)真一點(diǎn)你就離成功近一點(diǎn)
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff
(2)readline()
每次讀取一行內(nèi)容。
content = fp.readline()
輸出:
認(rèn)真一點(diǎn)你就離成功近一點(diǎn)
(3)readlines()
一次性讀取整個(gè)文件內(nèi)容到一個(gè)迭代器以供我們遍歷(讀取到一個(gè)list中,以供使用,比較方便)
content = fp.readlines()
輸出;
[‘認(rèn)真一點(diǎn)你就離成功近一點(diǎn)\n’, ‘啊啊啊啊啊啊啊啊啊啊啊\n’, ‘fffffffffff’]
3.2 寫
(1)write()
fp.write()的參數(shù)必須是一個(gè)字符串,就是你要寫入文件的內(nèi)容.
(2)writelines()
fp.writelines()的參數(shù)可以是列表,也可以是字符串。
3.3 獲取文件讀寫類型
如果文件可寫,則 fp.writable() 方法返回 True,否則返回 False。
如果文件是可讀的,則 fp.readable() 方法返回 True,否則返回 False。
比如:以w方式打開的文件,fp.readable()返回False,fp.writable()返回True。
3.4 指針移動(dòng)
seek
f.seek(偏移量,[起始位置])
起始位置的三種取值:0文件開頭,1當(dāng)前位置,2文件末尾
例子見1.3中(10)a+
3.5 當(dāng)前指針位置
tell()返回一個(gè)整數(shù),表示當(dāng)前文件指針的位置(就是到文件頭的字節(jié)數(shù)).
如果是utf-8編碼,那么一個(gè)中文字符占用三個(gè)字節(jié),一個(gè)英文字符占用一個(gè)字節(jié)。如果是gbk編碼,那么一個(gè)中文字符占用兩個(gè)字節(jié),一個(gè)英文字符占用一個(gè)字節(jié)。
with open(r"E:\test.txt",'a+',encoding='utf-8') as fp:
content = fp.tell()
print(content)
打?。?0
3.6 truncate
truncate(size) 方法用于截?cái)辔募?,如果指定了可選參數(shù) size,則表示截?cái)辔募?size 個(gè)字符。 如果沒(méi)有指定 size,則從當(dāng)前位置起截?cái)?;截?cái)嘀?size 后面的所有字符被刪除。
總結(jié)
到此這篇關(guān)于python中open函數(shù)對(duì)文件處理的文章就介紹到這了,更多相關(guān)python open函數(shù)使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用python計(jì)算復(fù)雜三角函數(shù)
當(dāng)涉及到計(jì)算復(fù)雜的三角函數(shù)時(shí),Python 提供了強(qiáng)大的數(shù)學(xué)庫(kù)和函數(shù)來(lái)幫助我們進(jìn)行計(jì)算,在本篇博客中,我將介紹如何使用 Python 來(lái)計(jì)算復(fù)雜的三角函數(shù),需要的朋友可以參考下2023-08-08
python中[[]] * (n)和[[] for _ in 
本文主要介紹了python中[[]] * (n)和[[] for _ in range(n)]的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02
Python數(shù)據(jù)處理之導(dǎo)入導(dǎo)出Excel數(shù)據(jù)方式
Python是Excel數(shù)據(jù)處理的絕佳工具,通過(guò)Pandas和Openpyxl等庫(kù)可以實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入、導(dǎo)出和自動(dòng)化處理,從基礎(chǔ)的數(shù)據(jù)讀取和清洗到復(fù)雜的分析和可視化,Python都能提供強(qiáng)大的支持,文章還介紹了如何編寫腳本實(shí)現(xiàn)自動(dòng)化處理,并探討了與其他工具的跨界合作,以提升整體效率2025-01-01
Python functools模塊學(xué)習(xí)總結(jié)
這篇文章主要介紹了Python functools模塊學(xué)習(xí)總結(jié),本文講解了functools.partial、functool.update_wrapper、functool.wraps、functools.reduce、functools.cmp_to_key、functools.total_ordering等方法的使用實(shí)例,需要的朋友可以參考下2015-05-05
零基礎(chǔ)學(xué)Python之前需要學(xué)c語(yǔ)言嗎
在本篇文章里小編給大家整理的是一篇關(guān)于零基礎(chǔ)學(xué)Python之前需要學(xué)c語(yǔ)言關(guān)系的文章,需要的朋友們可以參考下。2020-07-07
Python中使用攝像頭實(shí)現(xiàn)簡(jiǎn)單的延時(shí)攝影技術(shù)
這篇文章主要介紹了Python中使用攝像頭實(shí)現(xiàn)簡(jiǎn)單的延時(shí)攝影技術(shù),本文只是一個(gè)簡(jiǎn)單的小示例,講解了實(shí)現(xiàn)過(guò)程并給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03
Python實(shí)戰(zhàn)項(xiàng)目之MySQL tkinter pyinstaller實(shí)現(xiàn)學(xué)生管理系統(tǒng)
讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用MySQL、tkinter、 pyinstaller實(shí)現(xiàn)一個(gè)學(xué)生管理系統(tǒng),大家可以通過(guò)案例查缺補(bǔ)漏,提升水平2021-10-10
Python獲取Redis所有Key以及內(nèi)容的方法
今天小編就為大家分享一篇Python獲取Redis所有Key以及內(nèi)容的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
為什么黑客都用python(123個(gè)黑客必備的Python工具)
python支持功能強(qiáng)大的黑客攻擊模塊,而且Python提供多種庫(kù),用于支持黑客攻擊,Python提供了ctypes庫(kù), 借助它, 黑客可以訪問(wèn)Windows、OS X、Linux等系統(tǒng)提供 DLL與共享庫(kù),還有Python語(yǔ)言易學(xué)易用,這對(duì)黑客攻擊而言是個(gè)巨大的優(yōu)勢(shì)。2020-01-01

