如何获取python来读取.txt文件的第n行?

sup*_*m95 1 python loops for-loop

如果我想让python读取文件的第2行(或第4行),我怎么告诉它这样做?另外,如果我想读取.txt文件的第2行,但之后每4行读取(下一行将是第6行,然后是10行,依此类推),我该如何做呢?

AGN*_*zer 6

您不能... [使用纯I / O函数执行此操作]您必须阅读所有行,并使代码忽略不需要的行。

例如:

with open(filename) as f:
    lines = f.readlines()
desired_lines = lines[start:end:step]
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,将开始,结束和步骤替换为所需的值,例如,“ ...如果我想读取.txt文件的第2行,但此后每4行...”,您将执行以下操作:

desired_lines = lines[1::4]
Run Code Online (Sandbox Code Playgroud)


jen*_*ena 6

虽然有点晚了,但这里有一个解决方案,不需要立即将整个文件内容读入 RAM,这在处理足够大的文件时可能会造成麻烦:

# Print every second line.
step = 2
with open("file.txt") as handle:
    for lineno, line in enumerate(handle):
        if lineno % step == 0:
            print(line)
Run Code Online (Sandbox Code Playgroud)

文件对象 ( handle) 允许遍历行。这意味着如果不需要的话,我们可以逐行读取文件,而无需累积所有行。为了选择每第n行,我们使用带有当前行号和所需步长的模运算符。