seek()函数?

时间:2012-07-27 22:28:47

标签: python

请原谅我的困惑,但我已经阅读了关于python中的seek()函数的文档(必须使用它之后),尽管它对我有所帮助,但我仍然对它的实际含义感到困惑,非常感谢您的解释。谢谢。

4 个答案:

答案 0 :(得分:201)

关于seek(),不用太担心。

首先,在打开文件时操作非常有用。

重要的是要注意其语法如下:

fp.seek(offset, from_what)

其中fp是您正在使用的文件指针; offset表示你将移动多少个职位; from_what定义了您的参考点:

  • 0 :表示您的参考点是文件的开头
  • 1 :表示您的参考点是当前文件位置
  • 2 :表示您的参考点是文件的结束

如果省略,from_what默认为0。

永远不要忘记,在管理文件时,您当前正在处理的文件中始终存在一个位置。刚打开时,该位置是文件的开头,但是当您使用它时,您可以前进 当您需要seek沿着该打开文件时,walk对您有用,就像您前往的路径一样。

答案 1 :(得分:38)

打开文件时,系统指向文件的开头。你做的任何读或写将从一开始就发生。 seek()操作将指针移动到文件的其他部分,以便您可以在该位置读取或写入。

因此,如果您想要读取整个文件但跳过前20个字节,请打开文件,搜索(20)以移动到您想要开始阅读的位置,然后继续阅读文件。

或者说你想读每10个字节,你可以编写一个寻找(9,1)的循环(相对于当前位置向前移动9个字节),读取一个字节,重复。

答案 2 :(得分:2)

seek函数的字节数为偏移量

Ascii文件示例:

因此,如果您的文本文件包含以下内容:

simple.txt

abc

您可以跳过 1个字节,以跳过第一个字符,如下所示:

fp = open('simple.txt', 'r')
fp.seek(1)
print fp.readline()
>>> bc

二进制文件示例收集宽度:

fp = open('afile.png', 'rb')
fp.seek(16)
print 'width: {0}'.format(struct.unpack('>i', fp.read(4))[0])
print 'height: ', struct.unpack('>i', fp.read(4))[0]
  

注意:致电read后,您将更改   读头,其行为类似于seek

答案 3 :(得分:0)

对于字符串,请不要使用WHENCE:使用f.seek(0)放置在文件的开头,使用f.seek(len(f)+1)放置在文件的结尾。使用open(file,“ r +”)读取/写入文件中的任何位置。如果您使用“ a +”,则无论将光标放在何处,都只能在文件末尾写(追加)。