使用 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()
我有一个很大的文本文件(几个 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()