tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
offset – 偏移量,也就是代表需要移动偏移的字节数,注意是按照字节算的,字符编码存每个字符所占的字节长度不一样。
如“好好学习” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“飞”和“学”两个字中间。
但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了。少了一个字节。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。
如果设为1,则使用当前的位置作为参考位置。
如果它被设为2,那么该文件的末尾将作为参考位置。
例子:
#打开一个文件
f =open('f.txt','r+')
str_read = f.read(10)
print("读取的字符串是:%s" % str_read)
#查找当前位置
position = f.tell()
print("当前位置: %s" %position)
#把指针再次重新定位到文件开头
position =f.seek(0,0)
str_read =f.read(10)
print("重新读取读取的字符串是:%s" % str_read)
#关闭文件
f.close()
结果:
读取的字符串是:2204513940
当前位置: 10
重新读取读取的字符串是:2204513940