读取N行直到Python 3中的EOF

时间:2018-03-28 20:23:03

标签: python python-3.x

您好在SO上找到了几个解决方案,但我遗漏了一些信息。

我想一次读4行,直到我点击EOF。我知道如何用其他语言来做,但Python 3中最好的方法是什么?

这就是我所拥有的,lines始终是前4行,然后代码停止(我知道,因为理解只给了我all_lines的前4个元素。我可以使用一些有点反击和休息等等,但这对我来说似乎相当便宜。

if os.path.isfile(myfile):
    with open(myfile, 'r') as fo:
        all_lines = fo.readlines()
        for lines in all_lines[:4]:
            print(lines)

我想一次处理4行直到我点击EOF。我正在使用的文件相当短,可能大约100行MAX

2 个答案:

答案 0 :(得分:1)

如果你想以4块为单位迭代这些行,你可以这样做:

if os.path.isfile(myfile):
    with open(myfile, 'r') as fo:
        all_lines = fo.readlines()
        for i in range(0, len(all_lines), 4):
            print(all_lines[i:i+4])

答案 1 :(得分:0)

您可以一次只读取四个,而不是读取整个文件然后循环四行。考虑

def fun(myfile):
    if not os.path.isfile(myfile):
        return
    with open(myfile, 'r') as fo:
        while True:
            for line in (fo.readline() for _ in range(4)):
                if not line:
                    return
                print(line)

这里,生成器表达式用于读取四行,这些行嵌入在"无限"循环,当line是假的时候停止(空str ''),这只有在我们达到EOF时才会发生。