请原谅我在这里的困惑,但是我已经阅读了有关 python 中的 find ()函数的文档(在不得不使用它之后) ,虽然它帮助了我,但是我仍然对它的实际意义有些困惑,任何解释都非常感谢,谢谢。
打开文件时,系统会指向文件的开头。你所做的任何读或写都将从一开始就发生。seek()操作将该指针移动到文件的某个其他部分,以便您可以在该位置读写。
seek()
因此,如果您想读取整个文件,但是跳过前20个字节,打开文件,seek(20)移到您想要开始读取的位置,然后继续读取文件。
seek(20)
或者说你想每读取10个字节,你可以写一个循环,它执行 seek(9, 1)(相对于当前位置向前移动9个字节) ,read(1)(读取1个字节) ,repeat。
seek(9, 1)
read(1)
关于 seek()没有太多的担心。
首先,它在操作打开的文件时很有用。
需要注意的是,它的语法如下:
fp.seek(offset, from_what)
其中,fp是您正在使用的文件指针; offset表示您将移动多少位置; from_what定义您的参考点:
fp
offset
from_what
如果省略,from_what默认为0。
永远不要忘记,当管理文件时,文件中总会有一个位置是您当前正在处理的。当刚刚打开时,这个位置是文件的开始,但是当你使用它时,你可以前进。 当您需要沿着打开的文件 walk时,seek将对您非常有用,就像您正在进入的路径一样。
walk
seek
seek函数期望的是以字节为单位的 偏移。
因此,如果你有一个文本文件,其内容如下:
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。
read
对于字符串,忘记使用 WHANCE: 使用 f.find (0)定位在文件的开头,使用 f.find (len (f) + 1)定位在文件的结尾。使用 open (file,“ r +”)读/写文件中的任何地方。如果您使用“ a +”,那么无论您将光标放置在何处,您都只能在文件的末尾写入(附加)。