今天在处理一串长文本时想用tell()记录指针的位置,却发现不同位置的tell()输出的是同一个值。
基本代码如下
with open("name.txt","r",encoding="utf-8") as r:
for line in r.readlines():
print(r.tell())
最后通过查阅资料知道,使用for line in r.readlines 会把文件指针移至文件末尾,所以每次循环时都会输出文件末尾的指针值。
知道了这个,就可以自己写一个计数器,记录文件中位置。
seek = 0
with open("name.txt","r",encoding="utf-8") as r:
for line in r.readlines():
seek += len(line.encode('utf-8'))+1
#+1是因为每行结束时会出现一个'\n',len()无法计算出来
print(seek)
这样就可以记录文件位置了
参考stackoverflow