在大文件中打印行号之间的行

Jav*_*eef 4 python python-2.7

我有一个非常大的文本文件,大小超过30 GB.出于某些原因,我想读取1000000和2000000之间的行,并与用户输入字符串进行比较.如果匹配,我需要将行内容写入另一个文件.

我知道如何逐行读取文件.

input_file = open('file.txt', 'r')
for line in input_file:
    print line
Run Code Online (Sandbox Code Playgroud)

但是如果文件的大小很大,那真的会影响性能吗?如何以优化的方式解决这个问题.

Jon*_*nts 7

你可以使用itertools.islice:

from itertools import islice
with open('file.txt') as fin:
    lines = islice(fin, 1000000, 2000000) # or whatever ranges
    for line in lines:
        # do something
Run Code Online (Sandbox Code Playgroud)

当然,如果你的线是固定长度的,你可以直接使用它来到fin.seek()线的起点.否则,上面的方法仍然必须读取n行直到islice开始产生输出,但实际上是一种限制范围的方便方法.