欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python seek()和tell()函數(shù)的具體使用

 更新時(shí)間:2023年02月17日 14:31:17   作者:NOGE2022  
本文主要介紹了Python seek()和tell()函數(shù)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在講解 seek() 函數(shù)和 tell() 函數(shù)之前,首先來(lái)了解一下什么是文件指針。

我們知道,使用 open() 函數(shù)打開(kāi)文件并讀取文件中的內(nèi)容時(shí),總是會(huì)從文件的第一個(gè)字符(字節(jié))開(kāi)始讀起。那么,有沒(méi)有辦法可以自定指定讀取的起始位置呢?答案是肯定,這就需要移動(dòng)文件指針的位置。

文件指針用于標(biāo)明文件讀寫(xiě)的起始位置。假如把文件看成一個(gè)水流,文件中每個(gè)數(shù)據(jù)(以 b 模式打開(kāi),每個(gè)數(shù)據(jù)就是一個(gè)字節(jié);以普通模式打開(kāi),每個(gè)數(shù)據(jù)就是一個(gè)字符)就相當(dāng)于一個(gè)水滴,而文件指針就標(biāo)明了文件將要從文件的哪個(gè)位置開(kāi)始讀起。圖 1 簡(jiǎn)單示意了文件指針的概念。

圖 1 文件指針概念示意圖

可以看到,通過(guò)移動(dòng)文件指針的位置,再借助 read() 和 write() 函數(shù),就可以輕松實(shí)現(xiàn),讀取文件中指定位置的數(shù)據(jù)(或者向文件中的指定位置寫(xiě)入數(shù)據(jù))。

注意,當(dāng)向文件中寫(xiě)入數(shù)據(jù)時(shí),如果不是文件的尾部,寫(xiě)入位置的原有數(shù)據(jù)不會(huì)自行向后移動(dòng),新寫(xiě)入的數(shù)據(jù)會(huì)將文件中處于該位置的數(shù)據(jù)直接覆蓋掉。
實(shí)現(xiàn)對(duì)文件指針的移動(dòng),文件對(duì)象提供了 tell() 函數(shù)和 seek() 函數(shù)。tell() 函數(shù)用于判斷文件指針當(dāng)前所處的位置,而 seek() 函數(shù)用于移動(dòng)文件指針到文件的指定位置。

tell() 函數(shù)

tell() 函數(shù)的用法很簡(jiǎn)單,其基本語(yǔ)法格式如下:

file.tell()

其中,file 表示文件對(duì)象。

例如,在同一目錄下,編寫(xiě)如下程序?qū)?a.txt 文件做讀取操作,a.txt 文件中內(nèi)容為:

http://csdn.net

讀取 a.txt 的代碼如下:

f =open("a.txt",'r')
print(f.tell())
print(f.read(3))
print(f.tell())

運(yùn)行結(jié)果為:

0
htt
3

可以看到,當(dāng)使用 open() 函數(shù)打開(kāi)文件時(shí),文件指針的起始位置為 0,表示位于文件的開(kāi)頭處,當(dāng)使用 read() 函數(shù)從文件中讀取 3 個(gè)字符之后,文件指針同時(shí)向后移動(dòng)了 3 個(gè)字符的位置。這就表明,當(dāng)程序使用文件對(duì)象讀寫(xiě)數(shù)據(jù)時(shí),文件指針會(huì)自動(dòng)向后移動(dòng):讀寫(xiě)了多少個(gè)數(shù)據(jù),文件指針就自動(dòng)向后移動(dòng)多少個(gè)位置。

seek()函數(shù)

seek() 函數(shù)用于將文件指針移動(dòng)至指定位置,該函數(shù)的語(yǔ)法格式如下:

file.seek(offset[, whence])

其中,各個(gè)參數(shù)的含義如下:

  • file:表示文件對(duì)象;
  • whence:作為可選參數(shù),用于指定文件指針要放置的位置,該參數(shù)的參數(shù)值有 3 個(gè)選擇:0 代表文件頭(默認(rèn)值)、1 代表當(dāng)前位置、2 代表文件尾。
  • offset:表示相對(duì)于 whence 位置文件指針的偏移量,正數(shù)表示向后偏移,負(fù)數(shù)表示向前偏移。例如,當(dāng)whence == 0 &&offset == 3(即 seek(3,0) ),表示文件指針移動(dòng)至距離文件開(kāi)頭處 3 個(gè)字符的位置;當(dāng)whence == 1 &&offset == 5(即 seek(5,1) ),表示文件指針向后移動(dòng),移動(dòng)至距離當(dāng)前位置 5 個(gè)字符處。

注意,當(dāng) offset 值非 0 時(shí),Python 要求文件必須要以二進(jìn)制格式打開(kāi),否則會(huì)拋出 io.UnsupportedOperation 錯(cuò)誤。

下面程序示范了文件指針操作:

f =open('a.txt','rb')
# 判斷文件指針的位置
print(f.tell())
# 讀取一個(gè)字節(jié),文件指針自動(dòng)后移1個(gè)數(shù)據(jù)
print(f.read(1))
print(f.tell())
# 將文件指針從文件開(kāi)頭,向后移動(dòng)到 5 個(gè)字符的位置
f.seek(5)
print(f.tell())
print(f.read(1))
# 將文件指針從當(dāng)前位置,向后移動(dòng)到 5 個(gè)字符的位置
f.seek(5,1)
print(f.tell())
print(f.read(1))
# 將文件指針從文件結(jié)尾,向前移動(dòng)到距離 2 個(gè)字符的位置
f.seek(-1,2)
print(f.tell())
print(f.read(1))

運(yùn)行結(jié)果為:

0
b'h'
1
5
b'/'
11
b'a'
21
b't'
————————————————

到此這篇關(guān)于Python seek()和tell()函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)Python seek() tell()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何使用matplotlib繪制柱狀圖

    Python如何使用matplotlib繪制柱狀圖

    這篇文章主要介紹了Python如何使用matplotlib繪制柱狀圖問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python中Tkinter實(shí)現(xiàn)分頁(yè)標(biāo)簽的示例代碼

    python中Tkinter實(shí)現(xiàn)分頁(yè)標(biāo)簽的示例代碼

    這篇文章主要介紹了python中Tkinter實(shí)現(xiàn)分頁(yè)標(biāo)簽的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python三百行代碼實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    Python三百行代碼實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    飛機(jī)大戰(zhàn)想必大家可能玩過(guò)微信的這款小游戲,給我的感覺(jué)是這款游戲怎么可以做得這么好呢,操作簡(jiǎn)單,容易上手,簡(jiǎn)直是“老少皆宜”啊,既然這款游戲這么棒,能否自己動(dòng)手用 Python 來(lái)實(shí)現(xiàn)呢?事實(shí)證明是可以的
    2022-09-09
  • python查詢文件夾下excel的sheet名代碼實(shí)例

    python查詢文件夾下excel的sheet名代碼實(shí)例

    這篇文章主要介紹了python查詢文件夾下excel的sheet名方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python實(shí)現(xiàn)將wav轉(zhuǎn)amr,并轉(zhuǎn)換成hex數(shù)組

    Python實(shí)現(xiàn)將wav轉(zhuǎn)amr,并轉(zhuǎn)換成hex數(shù)組

    這篇文章主要介紹了Python實(shí)現(xiàn)將wav轉(zhuǎn)amr,并轉(zhuǎn)換成hex數(shù)組方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python實(shí)點(diǎn)云分割k-means(sklearn)詳解

    python實(shí)點(diǎn)云分割k-means(sklearn)詳解

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)點(diǎn)云分割k-means,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • PyExecJS無(wú)法安裝的問(wèn)題解決

    PyExecJS無(wú)法安裝的問(wèn)題解決

    我們需要在Python中執(zhí)行一些JavaScript代碼時(shí),可能需要使用到execjs模塊,本文主要介紹了PyExecJS無(wú)法安裝的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • 淺談tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意點(diǎn)

    淺談tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意點(diǎn)

    這篇文章主要介紹了淺談tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • NumPy雙曲函數(shù)與集合操作詳解

    NumPy雙曲函數(shù)與集合操作詳解

    NumPy?提供了?sinh()、cosh()?和?tanh()?等?ufunc,它們接受弧度值并生成相應(yīng)的雙曲正弦、雙曲余弦和雙曲正切值,我們可以使用?NumPy?的?unique()?方法從任何數(shù)組中找到唯一元素,本文給大家詳細(xì)介紹了NumPy雙曲函數(shù)與集合操作,需要的朋友可以參考下
    2024-06-06
  • python批量爬取下載抖音視頻

    python批量爬取下載抖音視頻

    這篇文章主要為大家詳細(xì)介紹了python批量爬取下載抖音視頻,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評(píng)論