使用 Python 跳过大文本文件中的某些行

Skip certain lines in a big text file using Python

我有一个很大的文本文件(几个 GB)。我想跳过固定数量的行,这些行在我的文本文件中重复了几次。我写了下面的代码,它也能正常工作。我只是想知道是否有人可以建议一种更有效的方法来完成这项任务。

coordinate = []
with open('Lammps_D.txt', 'r') as file:
    data = file.readlines()
    data_iter = iter(data)
    for lines in data_iter:
        if lines[0] == "I":
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
        else:
            coordinate.append(lines)

据我了解,您跳过了重复的行,因此您跳过的所有行都满足条件 if lines[0] == "I" 在这种情况下,您可以使用 itertools.filterfalse

from itertools import filterfalse

with open('Lammps_D.txt', 'r') as file:
    data = file.readlines()
    coordinate = filterfalse(lambda x: x[0] == "I", data)

坐标现在是生成器,如果你想把它作为一个列表,只需添加

coordinate = list(coordinate)

一次读取所有行然后转换为迭代器可能比使用 readline.

将文件对象用作迭代器效率低
coordinate = []
with open('Lammps_D.txt', 'r') as file:
    line=file.readline()
    while line:
      if line[0]=='I':
        for i in range(9): line=file.readline()
      else:
        coordinate.append(line)
        line=file.readline()