Python中的文件定位方式
Python文件定位
1. 文件定位
用 Python 的 open()打開(kāi)一個(gè)文件后,都有一個(gè)指針指向文件的開(kāi)始文職,read()函數(shù)讀取一個(gè)文件后,指針將后移動(dòng)相應(yīng)的數(shù)目。
例子1:

2. tell()函數(shù)
tell()函數(shù)可以讓你知道文件內(nèi)的當(dāng)前位置(下次讀寫(xiě)會(huì)發(fā)生在文件開(kāi)頭這么多字節(jié)之后)。
例子2:

3. seek()函數(shù)
seek ( offest [ , from ] ) 函數(shù)改變當(dāng)前文件的位置,offest 表示要移動(dòng)的字節(jié)數(shù),from 變量指定開(kāi)始移動(dòng)字節(jié)的參考位置。
若 from 參數(shù)被設(shè)置為 0 ,這意味著將文件的開(kāi)頭作為移動(dòng)字節(jié)的參考位置;若設(shè)為1,則使用為當(dāng)前的位置作為參考位置;若設(shè)置為2,那么該文件的末尾將作為參考位置。
例子3:

python文件的定位讀寫(xiě)
上文說(shuō)到,文件的打開(kāi),關(guān)閉,追加,寫(xiě)入,讀寫(xiě)。
但是我們沒(méi)有實(shí)現(xiàn)從指定的位置進(jìn)行讀取啊。我想要1000行后面的東西,但也不能從開(kāi)頭讀取吧,忒不方便哦,但是,強(qiáng)大的python還是有解決辦法滴。
獲取當(dāng)前讀寫(xiě)的位置(tell)
#打開(kāi)一個(gè)已經(jīng)存在的文件
f = open('test.txt','r')
read_r = f.read(3)
print('讀取的數(shù)據(jù)是:',read_r)
#查看文件位置
position = f.tell()
print('當(dāng)前文件位置:',position)
read_r = f.read(3)
print('讀取的數(shù)據(jù)是:',read_r)
position = f.tell()
print('當(dāng)前文件位置:',position)
f.close()用**tell()**的方法可以查看當(dāng)前在文件中所讀取數(shù)據(jù)的位置
定位到某個(gè)位置seek(offset,from)
- offset:偏移量
- from:方向
- 0:表示文件開(kāi)頭
- 1:表示當(dāng)前位置
- 2:表示文件末尾
# 打開(kāi)一個(gè)已經(jīng)存在的文件
f = open("test.txt", "r")
str = f.read(30)
print "讀取的數(shù)據(jù)是 : ", str
# 查找當(dāng)前位置
position = f.tell()
print "當(dāng)前文件位置 : ", position
# 重新設(shè)置位置
f.seek(5,0)
# 查找當(dāng)前位置
position = f.tell()
print "當(dāng)前文件位置 : ", position
f.close()在代碼中,讀取了內(nèi)容后,讀出當(dāng)前的位置,讓后在重新設(shè)置位置,從重新設(shè)置的位置 開(kāi)始在次讀取。
這就是實(shí)現(xiàn)了定位去讀寫(xiě)。
注意:
在文本文件中,沒(méi)有使用b模式選項(xiàng)打開(kāi)的文件,只允許從文件頭開(kāi)始計(jì)算相對(duì)位置,從文件尾計(jì)算時(shí)就會(huì)引發(fā)異常。就是說(shuō),沒(méi)有用二進(jìn)制打開(kāi)的,只允許從開(kāi)頭進(jìn)行計(jì)算位置。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)戰(zhàn)之markdown轉(zhuǎn)pdf(包含公式轉(zhuǎn)換)
由于我們markdown編輯器比較特殊,不是很方便瀏覽,如果轉(zhuǎn)換成pdf的話,就不需要可以的去安裝各種編輯器才可以看了。所以本文將介紹如何通過(guò)Python實(shí)現(xiàn)md轉(zhuǎn)pdf或者是docx,需要的朋友可以參考一下2021-12-12
Python簡(jiǎn)單連接MongoDB數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Python簡(jiǎn)單連接MongoDB數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了Python使用pymongo模塊操作MongoDB數(shù)據(jù)庫(kù)的相關(guān)技巧,需要的朋友可以參考下2016-03-03
Pytorch evaluation每次運(yùn)行結(jié)果不同的解決
今天小編就為大家分享一篇Pytorch evaluation每次運(yùn)行結(jié)果不同的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Django+Xadmin構(gòu)建項(xiàng)目的方法步驟
這篇文章主要介紹了Django+Xadmin構(gòu)建項(xiàng)目的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
Python入門(mén)教程(四十一)Python的NumPy數(shù)組索引
這篇文章主要介紹了Python入門(mén)教程(四十一)Python的NumPy數(shù)組索引,數(shù)組索引是指使用方括號(hào)([])來(lái)索引數(shù)組值,numpy提供了比常規(guī)的python序列更多的索引工具,除了按整數(shù)和切片索引之外,數(shù)組可以由整數(shù)數(shù)組索引、布爾索引及花式索引,需要的朋友可以參考下2023-05-05
13行python代碼實(shí)現(xiàn)對(duì)微信進(jìn)行推送消息的示例代碼
本文主要介紹了13行python代碼實(shí)現(xiàn)對(duì)微信進(jìn)行推送消息的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
python中不能連接超時(shí)的問(wèn)題及解決方法
這篇文章主要介紹了python中不能連接超時(shí)的問(wèn)題及解決方法,需要的朋友可以參考下2018-06-06
Python實(shí)現(xiàn)Web指紋識(shí)別實(shí)例
這篇文章主要來(lái)帶大家探索Web指紋識(shí)別:了解主流識(shí)別方式,從標(biāo)題到指紋讀取網(wǎng)站信息的簡(jiǎn)單方法,揭秘Web指紋識(shí)別 關(guān)鍵字、哈希和URL的魔力2023-10-10

