首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >seek()函数?

seek()函数?
EN

Stack Overflow用户
提问于 2012-07-28 06:28:47
回答 4查看 174.4K关注 0票数 146

请原谅我在这里的困惑,但我已经阅读了关于python中seek()函数的文档(在不得不使用它之后),尽管它对我有所帮助,但我仍然对它的实际意义感到困惑,谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-28 06:38:48

关于seek(),没什么好担心的。

首先,它在操作打开的文件时很有用。

需要注意的是,它的语法如下:

代码语言:javascript
复制
fp.seek(offset, from_what)

其中fp是您正在使用的文件指针;offset表示您将移动的位置数;from_what定义您的参考点:

  • :表示您的参考点是file
  • 1:的开始表示您的参考点是当前文件的end

表示您的参考点是文件的end

如果省略,则from_what默认为0。

不要忘记,在管理文件时,文件中总会有一个您当前正在处理的位置。刚打开时,该位置是文件的开始位置,但当您使用它时,您可能会前进。

当您需要沿着打开的文件执行walk时,seek将非常有用,就像您要进入的路径一样。

票数 257
EN

Stack Overflow用户

发布于 2012-07-28 06:34:39

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

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

或者假设你想每10个字节读取一次,你可以编写一个循环来重复seek(9, 1) (相对于当前位置向前移动9个字节),read(1) (读取一个字节),重复。

票数 46
EN

Stack Overflow用户

发布于 2018-08-11 07:24:44

seek函数expect是以字节为单位偏移量

Ascii文件示例:

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

simple.txt

代码语言:javascript
复制
abc

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

代码语言:javascript
复制
fp = open('simple.txt', 'r')
fp.seek(1)
print fp.readline()
>>> bc

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

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11696472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档