【发布时间】:2013-02-03 08:22:21
【问题描述】:
我有一个大文本文件 (~7 GB)。我正在寻找是否存在读取大文本文件的最快方法。我一直在阅读有关使用几种方法逐块读取以加快该过程的方法。
例如effbot建议
# File: readline-example-3.py
file = open("sample.txt")
while 1:
lines = file.readlines(100000)
if not lines:
break
for line in lines:
pass # do something**strong text**
为了每秒处理 96,900 行文本。 其他authors建议使用islice()
from itertools import islice
with open(...) as f:
while True:
next_n_lines = list(islice(f, n))
if not next_n_lines:
break
# process next_n_lines
list(islice(f, n)) 将返回文件f 的下一个n 行的列表。在循环中使用它会给你n行的文件
【问题讨论】:
-
你为什么不自己检查一下什么对你来说是最快的?
-
@Nix 我不想逐行阅读,而是逐块阅读
-
如果你浏览答案,有人会分块展示如何做。
-
亲爱的@nix 我在effbot.org/zone/readline-performance.htm 中读到关于“加快行阅读”作者建议“如果您正在处理非常大的文件,如果您可以将块大小限制为某些东西会很好合理的”。该页面很旧“2000 年 6 月 9 日”,我正在寻找是否有更新(和更快)的方法。
标签: python performance optimization line chunking