python文件对象的seek和tell

2019年11月19日 / 6次阅读 / Last Modified 2019年11月19日

打开一个文件,读取内容,是很常见的操作。不过有的时候我们还需要反复读取文件中的内容,如果多次打开文件读取再多次关闭,显然不是特别好的操作,我们可以借助python文件对象的seek和tell函数,来实现反复的读取文件内容,最后再关闭文件。

文件对象的tell函数

先说tell函数,这个简单,就是告诉我们当前文件读取指针处于文件的什么位置。tell函数返回的位置,以byte计数:

>>> f = open('1.txt')
>>> f.tell()
0
>>> f.read(1)
'#'
>>> f.tell()
1
>>> f.read(24)
' GTR2SP2L A0A2 table\n# g'
>>> f.tell()
25

打开文件后,tell返回的位置是0;读取一个字符,tell就返回1。因此,python文件对象的tell函数,返回的位置就是已经去读的最后一个byte,下次再read,就是从这个位置往后开始算。

文件对象的seek函数

seek函数是用来重新定位读取文件的指针位置。

>>> f.close()
>>> f = open('1.txt')
>>> f.read(48)
'# GTR2SP2L A0A2 table\n# generating time: 17:00:0'
>>> f.tell()
48
>>> f.seek(0)
0
>>> f.read(48)
'# GTR2SP2L A0A2 table\n# generating time: 17:00:0'

以上代码,中间那个f.seek(0),将读取文件的指针,重新定位到最开始的位置,因此两次f.read(48),得到的内容是一样的。

seek含有一个参数,用来确定参考位置,默认是0,表示从文件头开始的绝对位置,1表示以当前位置为参考,2表示从文件末尾开始。不过这个参数,我自己在测试的时候,始终有问题,因此就不详细介绍了。

-- EOF --

本文链接:https://www.pynote.net/archives/1522

相关文章

    留言区

    《python文件对象的seek和tell》有1条留言

    电子邮件地址不会被公开。 必填项已用*标注

    • 麦新杰

      貌似大家用的术语是:文件指针! [回复]


    前一篇:
    后一篇:

    More

    麦新杰的Python笔记

    Ctrl+D 收藏本页


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top