在Python中从文件中读取n行(但不是全部)

Pio*_*icz 3 python file

迭代文件时如何从文件中读取 n 行而不是仅读取一行?我有一个具有明确结构的文件,我想做这样的事情:

for line1, line2, line3 in file:
    do_something(line1)
    do_something_different(line2)
    do_something_else(line3)
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

ValueError:太多值无法解压

现在我正在这样做:

for line in file:
    do_someting(line)
    newline = file.readline()
    do_something_else(newline)
    newline = file.readline()
    do_something_different(newline)
... etc.
Run Code Online (Sandbox Code Playgroud)

这很糟糕,因为我正在编写无休止的“ newline = file.readline()”,这使代码变得混乱。有什么聪明的方法可以做到这一点吗?(我真的想避免一次读取整个文件,因为它很大)

nei*_*eil 6

基本上,您的file文件是一个迭代器,一次生成一行文件。这将您的问题转化为如何从迭代器一次生成多个项目。这个问题给出了一个解决方案。请注意,该函数islice位于 itertools 模块中,因此您必须从那里导入它。