我几天前就遇到了 python 问题。我是一名没有基本编程技能的生物信息学专家,我正在处理我必须处理的巨大文本文件(大约 25gb)。
我必须每次以 4 行为一组逐行读取 txt 文件,这意味着必须读取和处理前 4 行,然后我必须读取第二组 4 行,依此类推上。
显然我不能使用 readlines() 运算符,因为它会使我的内存过载,而且我必须使用 4 行中的每一行来进行一些字符串识别。
我考虑过使用 for 循环和 range 运算符:
openfile = open(path, 'r')
for elem in range(0, len(openfile), 4):
line1 = readline()
line2 = readline()
line3 = readline()
line4 = readline()
(process lines...)
不幸的是,这是不可能的,因为处于“阅读”模式的文件不能像列表或字典一样被迭代和处理。
有人可以帮助正确循环吗?
提前致谢
最佳答案
这具有低内存开销。它依赖于文件是按行读取的迭代器这一事实。
def grouped(iterator, size):
yield tuple(next(iterator) for _ in range(size))
像这样使用它:
for line1, line2, line3, line4 in grouped(your_open_file, size=4):
do_stuff_with_lines()
注意:此代码假定文件不以部分组结尾。
关于python - 以 4 为一组从巨大的文本文件中读取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707902/