python seek_关于python:seek()函数?

请在这里原谅我的困惑,但是我已经阅读了有关python中seek()函数的文档(必须使用它之后),尽管它对我有所帮助,但我对它的实际含义还是有些困惑,但任何解释都很多 谢谢,谢谢。

关于seek(),不必担心太多。

首先,对打开的文件进行操作时非常有用。

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

1fp.seek(offset, from_what)

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

0:表示您的参考点是文件的开头

1:表示参考点是当前文件位置

2:表示您的参考点是文件的结尾

如果省略,from_what默认为0。

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

当您需要沿着打开的文件沿着walk前进时,seek对您很有用,就像您要进入的路径一样。

+1用于解释第二个参数,尽管我想补充一点,您可能应该使用常量os.SEEK_SET,os.SEEK_CUR和os.SEEK_END代替魔术数字0,1和2, 分别。

查找位置是文件内容中的字节索引,类似于数组索引。 同样有趣的是,如果我们以追加模式a打开文件,则无法搜索以文件开头的文件。

实际上,在追加模式下,我们可以搜索以fp.seek(0,0)开头的文件,但是一旦您尝试写入该文件,seek将再次重置为文件末尾,内容将在末尾写入 。

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

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

或者说您想每10个字节读取一次,您可以编写一个循环,执行一次seek(9,1)(相对于当前位置向前移动9个字节),读取一个字节,然后重复。

-1:此答案无法解释第二个参数,实际上,用措辞来说,听起来像第二个参数指示要读取多少个字节。

seek函数期望以字节为单位的偏移量。

Ascii文件示例:

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

simple.txt

1abc

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

1

2

3

4fp = open('simple.txt', 'r')

fp.seek(1)

print fp.readline()

>>> bc

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

1

2

3

4fp = 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]

Note: Once you call read you are changing the position of the

read-head, which act's like seek.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值