Python打開文件、文件讀寫操作、with方式、文件常用函數(shù)實(shí)例分析
本文實(shí)例講述了Python打開文件、文件讀寫操作、with方式、文件常用函數(shù)。分享給大家供大家參考,具體如下:
打開文件:
在python3中,打開文件的函數(shù)是:
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
參數(shù)說(shuō)明:
file--文件名
mode—打開模式,默認(rèn)只讀模式
buffering--如果buffering的值被設(shè)為0,就不會(huì)有寄存。如果buffering的值取1,訪問(wèn)文件時(shí)會(huì)寄存行。如果將buffering的值設(shè)為大于1的整數(shù),表明了這就是的寄存區(qū)的緩沖大小。如果取負(fù)值,寄存區(qū)的緩沖大小則為系統(tǒng)默認(rèn)。
encoding—打開文件的編碼方式
模式介紹:
r:只讀模式(默認(rèn))
w :只寫模式,如果文件不存在就創(chuàng)建,如果存在,寫入的數(shù)據(jù)會(huì)覆蓋原來(lái)的數(shù)據(jù)
b :二進(jìn)制模式
t :文本模式
+:可寫可讀模式
a:追加模式,如果文件存在則文件指針指向文件末尾(追加數(shù)據(jù)),如果不存在就創(chuàng)建
r+:讀追加模式,先讀,再追加
w+:寫讀模式,先寫,意味著原本內(nèi)容丟失,再讀。
- 如果對(duì)于含有非ascll字符的文件,必須使用encoding,否則會(huì)拋異常:
![]()
print("r".center(50,'-'))
f=open("file.txt",encoding="utf-8")
print(f.read())
f.close()
-----------------
運(yùn)行結(jié)果:
my
sas
aaa
fsafsa
中文
中文
葫蘆娃
文件使用完畢后必須關(guān)閉: 文件指針.close()
文件操作:
讀操作:
讀取文件內(nèi)容如下:

- reads()是讀出全部?jī)?nèi)容
print("r".center(50,'-'))
f=open("file.txt",encoding="utf-8")
print(f.read())
f.close()
---------------------------
運(yùn)行結(jié)果:
my
sas
aaa
fsafsa
中文
中文
葫蘆娃
- readline()是讀出一行
print("r".center(50,'-'))
f=open("file.txt",encoding="utf-8")
print(f.readline())
f.close()
-----------
運(yùn)行結(jié)果:
my
- readlines()是讀出全部?jī)?nèi)容,并整理成一個(gè)列表
print("r".center(50,'-'))
f=open("file.txt",encoding="utf-8")
print(f.readlines())
f.close()
#------------------------r-------------------------
#運(yùn)行結(jié)果:
['my\n', 'sas\n', 'aaa\n', 'fsafsa\n', '中文\n', '中文\n', '葫蘆娃\n', '\n']
- r+模式會(huì)根據(jù)讀的內(nèi)容來(lái)決定指針的位置
print("r".center(50,'-'))
f=open("file.txt","r+",encoding="utf-8")
# print(f.readline())
f.write("hello mike")
f.close()
結(jié)果:

print("r".center(50,'-'))
f=open("file.txt","r+",encoding="utf-8")
print(f.readline())
f.write("hello mike")
f.close()
新結(jié)果:
寫操作:
- write():將一個(gè)字符串寫入文件
myfile=open("myfile1","wb")
myfile.write(b"nnnnnn")
myfile.write("my葫蘆娃".encode("utf-8"))
myfile.close()
- writelines(可迭代對(duì)象) 將一個(gè)可迭代對(duì)象寫入文件
myfile=open("myfile1","wb")
myfile.write(b"nnnnnn")
myfile.writelines([b'1',b'2',b'3',b'4'])
myfile.close()
- 當(dāng)需要寫完之后即時(shí)讀出來(lái)時(shí),使用w+,然后將文件指針置回文件頭:
myfile=open("myfile1","wb+")
myfile.write(b"nnnnnn")
myfile.seek(0)
print(myfile.read())
myfile.close()
- 如果是需要讀出特定位置,可以使用變量來(lái)記錄位置
myfile=open("myfile1","wb+")
myfile.write(b"1nnnnnn")
site=myfile.tell()
myfile.write(b"2nnnnnn")
myfile.seek(site)##讀出后一段
print(myfile.read())
myfile.close()
with:
- 為了便捷的關(guān)閉文件,python增加了with功能,當(dāng)with體執(zhí)行完將自動(dòng)關(guān)閉打開的文件:
with open("file.txt","r+",encoding="utf-8") as f:##將自動(dòng)執(zhí)行f.close()
print(f.tell())
f.write("金剛")
for line in f:
print(line,end="")
- 可以同時(shí)打開多個(gè)文件:
with open("file.txt",'r') as f ,\
open("file.new",'r') as m:
print(f.read(),m.read())
文件常用函數(shù):
file.close():關(guān)閉文件。關(guān)閉后文件不能再進(jìn)行讀寫操作
file.seek(offset[, whence]):設(shè)置文件當(dāng)前位置
file.tell():返回文件當(dāng)前位置。
myfile=open("myfile1","wb+")
myfile.write(b"1nnnnnn")
site=myfile.tell()
myfile.write(b"2nnnnnn")
myfile.seek(site)##讀出后一段
print(myfile.read())
myfile.close()
file.flush():刷新文件內(nèi)部緩沖,立即把內(nèi)部緩沖區(qū)的數(shù)據(jù)寫入文件,因?yàn)椴⒉皇邱R上將文件
import time
myfile=open("myfile1","wb+")
myfile.write(b"1nnnnnn")
time.sleep(10)
# myfile.flush()
myfile.write(b"2nnnnnn")
myfile.close()
上述代碼,直到程序運(yùn)行完成才一次性寫入“1nnnnnn2nnnnnn”
import time
myfile=open("myfile1","wb+")
myfile.write(b"1nnnnnn")
myfile.flush()
time.sleep(10)
myfile.write(b"2nnnnnn")
myfile.close()
上述代碼,可以看到,在程序sleep之前就已經(jīng)寫入了“1nnnnnn”
file.truncate([size]):截取文件,從文件開頭,截到指定位置,會(huì)覆蓋原文件。
文件內(nèi)容:

print("r".center(50,'-'))
f=open("file.txt","r+",encoding="utf-8")
print(f.readline())
print("----truncate()-------")
print(f.tell())
m=f.tell()
f.truncate(m)#內(nèi)容從0位置截?cái)嗟街付ㄎ恢?,不論?dāng)前光標(biāo)位置
f.close()
執(zhí)行后,文件內(nèi)容:
![]()
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python arcpy練習(xí)之面要素重疊拓?fù)錂z查
今天小編就為大家分享一篇Python ArcPy的面要素重疊拓?fù)錂z查,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-09-09
深度剖析使用python抓取網(wǎng)頁(yè)正文的源碼
平時(shí)打開一個(gè)網(wǎng)頁(yè),除了文章的正文內(nèi)容,通常會(huì)有一大堆的導(dǎo)航,廣告和其他方面的信息。本文的目的,在于說(shuō)明如何從一個(gè)網(wǎng)頁(yè)中提取出文章的正文內(nèi)容,而過(guò)渡掉其他無(wú)關(guān)的的信息。2014-06-06
python 實(shí)現(xiàn)list或string按指定分段
今天小編就為大家分享一篇python 實(shí)現(xiàn)list或string按指定分段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
如何在Python中引入和使用瀏覽器驅(qū)動(dòng)
本文介紹了如何在Python中引入和使用瀏覽器驅(qū)動(dòng),主要步驟包括安裝Selenium庫(kù)、下載并配置瀏覽器驅(qū)動(dòng)路徑、編寫Python代碼啟動(dòng)瀏覽器以及結(jié)束操作后關(guān)閉瀏覽器2025-01-01
簡(jiǎn)單示例入門了解Python TkInter框架
這篇文章主要為大家通過(guò)簡(jiǎn)單示的示例帶大家入門了解Python TkInter框架,讓大家對(duì)Python TkInter有一個(gè)簡(jiǎn)單的認(rèn)知,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2023-11-11
Python對(duì)列表進(jìn)行排序的五種方法示例代碼
這篇文章主要給大家介紹了關(guān)于Python對(duì)列表進(jìn)行排序的五種方法,分別是sort()、sorted()、lambda表達(dá)式、reverse()和自定義排序算法,這些方法各有特點(diǎn),文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2025-05-05

