python如何獲取文件當(dāng)前位置和定位某個(gè)位置
一、背景
Python 是一門易于學(xué)習(xí)、功能強(qiáng)大的編程語言。它提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊獭?/p>
Python 優(yōu)雅的語法和動(dòng)態(tài)類型以及解釋型語言的本質(zhì),使它成為多數(shù)平臺(tái)上寫腳本和快速開發(fā)應(yīng)用的理想語言。
下面我們來介紹一下python的文件指針定位相關(guān)知識(shí)。
二、獲取當(dāng)前讀寫位置
在讀寫文件的過程中,如果想知道當(dāng)前文件位置指針的位置,可以通過調(diào)用tell()方法來獲取。
tell()方法返回文件的當(dāng)前位置,即文件位置指針當(dāng)前位置。
其語法格式如下:
文件對象名.tell()
例:
使用tell()方法獲取文件當(dāng)前的讀寫位置。
with open('testfile.txt','r') as file: #以只讀方式打開名為“testfile.txt”的文件
line = file.read(8) #讀取前8個(gè)字節(jié)
print(line) #輸出前8個(gè)字節(jié)
p = file.tell() #獲取指針當(dāng)前位置
print('當(dāng)前位置:',p) #輸出當(dāng)前位置
line = file.read(4) #繼續(xù)讀取4個(gè)字節(jié)
print(line) #輸出讀取到的數(shù)據(jù)
p = file.tell() #獲取指針當(dāng)前位置
print('當(dāng)前位置:',p) #輸出當(dāng)前位置結(jié)果如下。

三、定位到某個(gè)位置
如果在讀寫文件的過程中,需要從指定的位置開始讀寫操作,就可以使用seek()方法實(shí)現(xiàn)。
seek()方法用于移動(dòng)文件位置指針到指定位置
其語法格式如下:
文件對象名.seek(offset[,whence])
例:
創(chuàng)建名為“seek.txt“的文件,輸入“This is a test!”并存放進(jìn)文件中,讀取單詞“test”并輸出到終端。
filename = input('請輸入新建的文件名:') #輸入文件名
with open(filename,'w+') as file: #新建文件并以讀寫方式打開
file.write('This is a test!') #將字符串輸入到文件
file.seek(10) #指針移到從頭開始的第10個(gè)字符處
con = file.read(4) #讀取4個(gè)字符給con
print(con) #輸出結(jié)果如下。

以文本文件格式打開文件時(shí),seek()方法中的whence參數(shù)取值只能是0,即只允許從文件開始位置計(jì)算偏移量。
若想從當(dāng)前位置或文件末尾位置計(jì)算偏移量,需要使用“b”模式(二進(jìn)制格式)打開文件。
例:
讀取“seek.txt”文件中倒數(shù)第2個(gè)字符。
with open('seek.txt','rb') as file: #新建文件并以讀寫方式打開
file.seek(-2,2) #將文件位置指針定位到倒數(shù)第2個(gè)字符處
con = file.read(1) #讀取1個(gè)字符給con
print(con) #輸出結(jié)果如下。

四、總結(jié)
以上就是就是關(guān)于Python的文件指針定位的相關(guān)知識(shí),僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)監(jiān)控鍵盤鼠標(biāo)操作示例【基于pyHook與pythoncom模塊】
這篇文章主要介紹了Python實(shí)現(xiàn)監(jiān)控鍵盤鼠標(biāo)操作,結(jié)合實(shí)例形式分析了Python基于pyHook與pythoncom模塊的鍵盤、鼠標(biāo)事件響應(yīng)及日志文件操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-09-09
python使用fork實(shí)現(xiàn)守護(hù)進(jìn)程的方法
守護(hù)進(jìn)程(Daemon)也稱為精靈進(jìn)程是一種生存期較長的一種進(jìn)程。它們獨(dú)立于控制終端并且周期性的執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。他們常常在系統(tǒng)引導(dǎo)裝入時(shí)啟動(dòng),在系統(tǒng)關(guān)閉時(shí)終止。2017-11-11
詳解如何使用Pandas刪除DataFrame中的非數(shù)字類型數(shù)據(jù)
在數(shù)據(jù)處理和分析過程中,經(jīng)常會(huì)遇到需要清洗數(shù)據(jù)的情況,本文將詳細(xì)介紹如何使用Pandas刪除DataFrame中的非數(shù)字類型數(shù)據(jù),感興趣的小伙伴可以了解下2024-03-03
Python常用庫Numpy進(jìn)行矩陣運(yùn)算詳解
這篇文章主要介紹了Python常用庫Numpy進(jìn)行矩陣運(yùn)算詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Django+Uwsgi+Nginx如何實(shí)現(xiàn)生產(chǎn)環(huán)境部署
這篇文章主要介紹了Django+Uwsgi+Nginx如何實(shí)現(xiàn)生產(chǎn)環(huán)境部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
LyScript實(shí)現(xiàn)繞過反調(diào)試保護(hù)的示例詳解
LyScript插件中內(nèi)置的方法可實(shí)現(xiàn)各類反調(diào)試以及屏蔽特定API函數(shù)的功能,這類功能在應(yīng)對病毒等惡意程序時(shí)非常有效。本文為大家提供了LyScript實(shí)現(xiàn)繞過反調(diào)試保護(hù)的示例代碼,感興趣的可以了解一下2022-08-08
Python?Web?App開發(fā)Dockerfiles編寫示例
這篇文章主要為大家介紹了Python?Web?App編寫Dockerfiles的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

