gpt4 book ai didi

python - 在遍历for循环的python中使用ftell()的意外文件指针位置

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:30 25 4
gpt4 key购买 nike

获取以下代码的意外输出:

sample.txt 包含:

this is the first line
this is the second line
this is the third line
this is the fourth line
this is the fifth line
this is the sixth line

代码:

import sys  

f1=open("sample3.txt",'r')

print f1.tell()

for line in f1:
print line
print "postion of the file pointer",f1.tell()

输出:

0  
this is the first line
postion of the file pointer 141
this is the second line
postion of the file pointer 141
this is the third line
postion of the file pointer 141
this is the fourth line
postion of the file pointer 141
this is the fifth line
postion of the file pointer 141
this is the sixth line
postion of the file pointer 141

我希望在每行的末尾显示文件指针位置

最佳答案

我在文档中找到了相关部分:

A file object is its own iterator, for example iter(f) returns f (unless f is closed). When a file is used as an iterator, typically in a for loop (for example, for line in f: print line.strip()), the next() method is called repeatedly. This method returns the next input line, or raises StopIteration when EOF is hit when the file is open for reading (behavior is undefined when the file is open for writing). In order to make a for loop the most efficient way of looping over the lines of a file (a very common operation), the next() method uses a hidden read-ahead buffer. As a consequence of using a read-ahead buffer, combining next() with other file methods (like readline()) does not work right. However, using seek() to reposition the file to an absolute position will flush the read-ahead buffer.

关于python - 在遍历for循环的python中使用ftell()的意外文件指针位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44870463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com