繁体   English   中英

使用.readline()时Python如何跟踪文件中的位置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM