Python中文件随机读取方法seek和tell
将文件都视为流,只能按顺序从头到尾读取。实际上,可在文件中移动,只访问感兴趣的部分(称为随机存取)。为此,可使用文件对象的两个方法:seek和tell。
方法seek(offset[, whence])将当前位置(执行读取或写入的位置)移到offset和whence指定的地方。参数offset 指定了字节(字符)数,而参数whence 默认为io.SEEK_SET(0),这意味着偏移量是相对于文件开头的(偏移量不能为负数)。参数whence 还可设置
为io.SEEK_CUR(1)或io.SEEK_END(2),其中前者表示相对于当前位置进行移动(偏移量可以为负),而后者表示相对于文件末尾进行移动。请看下面的示例:
>>> f = open(r'C:\text\somefile.txt', 'w')
>>> f.write('01234567890123456789')
20
>>> f.seek(5)
5
>>> f.write('Hello, World!')
13
>>> f.close()
>>> f = open(r'C:\text\somefile.txt')
>>> f.read()
'01234Hello, World!89'
方法tell()返回当前位于文件的什么位置,如下例所示:
>>> f = open(r'C:\text\somefile.txt')
>>> f.read(3)
'012'
>>> f.read(2)
'34'
>>> f.tell()
5