python 在readlines()中调用tell()中遇到的一点问题

今天在处理一串长文本时想用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值