Python 文件读取时,在for循环中的tell方法返回错误

代码每次迭代一行,期望tell方法返回当前指针的位置。但是实际返回的是整片文档的最后的位置;
请帮我看看问题在哪里?

My Daily.txt

Good morning:
    As we known, Chengdu IS one of largest cities in the world!
    Set up
    get up
    take off
OK

代码如下

with open(r'My Daily', 'r+') as f:
    for line in f:
        print f.tell()
阅读 2.7k
2 个回答

当对 文件对象f 使用 for 遍历的时候,会将 f 的内容读取出来,生成可迭代对象进行遍历。

所以你输出的位置总是在最后

for line in f:
是在调用 f.next().
f.next() 方法被调用的时候,f.tell() 方法不可以被调用

如果需要返回当前指针位置,可以这样
pos = 0
with open(r'My Daily', 'r+') as f:

for line in f:
    pos += len(lien)
    #print f.tell()
    print(post)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进