[英]How does Python keep track of where it is in a file when using .readline()
Python跟踪使用readline读取了哪一行,它是如何做到的。
fin = open('/etc/passwd')
fin.readline()
当我再次运行readline时,它将读取第二行。
只需跟踪文件指针的当前位置即可。 这是一个非常非常愚蠢的示例(真正的实现基于文件对象的系统级表示,句柄缓冲等,它的复杂性要高一个或多个数量级-但基本原理是相同的)。
class FakeFile(object):
def __init__(self, text):
self.text = text
self.length = len(text)
self.pointer = 0
def readline(self):
if self.pointer >= self.length:
# we've already read all the content
return ""
buffer = []
while self.pointer < self.length:
buffer.append(self.text[self.pointer])
self.pointer += 1
if buffer[-1] == "\n":
break
return "".join(buffer)
def seek(self, position):
if position < 0 or position > self.length:
raise IOError("Invalid argument", 22)
self.pointer = position
def tell(self):
return self.position
# etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.