Answers:
关于seek()
没有太多的担心。
首先,对打开的文件进行操作时非常有用。
重要的是要注意其语法如下:
fp.seek(offset, from_what)
fp
您正在使用的文件指针在哪里;offset
表示您将移动多少个职位;from_what
定义您的参考点:
如果省略,则from_what
默认为0。
永远不要忘记,在管理文件时,该文件中总会存在您当前正在处理的位置。刚打开时,该位置是文件的开头,但是当您使用它时,可能会前进。
seek
当您需要walk
打开该文件时,对您很有用,就像您要进入的路径一样。
当您打开文件时,系统指向文件的开头。您所做的任何读取或写入都将从一开始就发生。一个seek()
操作将该指针移动到文件的其他部分,以便您可以在该位置进行读取或写入。
因此,如果您想读取整个文件但跳过前20个字节,请打开文件,seek(20)
移至要开始读取的位置,然后继续读取文件。
或者说您想每隔10个字节读取一次,您可以编写一个循环seek(9, 1)
(相对于当前位置向前移动9个read(1)
字节)(重复读取一个字节)。
该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
。
对于字符串,请忘记使用WHENCE:使用f.seek(0)放置在文件的开头,使用f.seek(len(f)+1)放置在文件的结尾。使用open(file,“ r +”)读取/写入文件中的任何位置。如果使用“ a +”,则无论将光标放在何处,都只能在文件末尾写入(附加)。
os.SEEK_SET
,os.SEEK_CUR
和,os.SEEK_END
而不是神奇数字0
,1
和2
分别。