我有一个非常大的文本文件,大小超过30 GB.出于某些原因,我想读取1000000和2000000之间的行,并与用户输入字符串进行比较.如果匹配,我需要将行内容写入另一个文件.
我知道如何逐行读取文件.
input_file = open('file.txt', 'r')
for line in input_file:
print line
Run Code Online (Sandbox Code Playgroud)
但是如果文件的大小很大,那真的会影响性能吗?如何以优化的方式解决这个问题.
你可以使用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开始产生输出,但实际上是一种限制范围的方便方法.
| 归档时间: |
|
| 查看次数: |
2154 次 |
| 最近记录: |