Python最快的读取大文本文件(几个GB)的方法

16 浏览
0 Comments

Python最快的读取大文本文件(几个GB)的方法

我有一个很大的文本文件(大约7 GB)。我正在寻找最快的读取大文本文件的方法。我已经了解了一些方法,比如按块读取以加快处理速度。\n例如,effbot建议使用以下方法:\n

# 文件:readline-example-3.py
file = open("sample.txt")
while 1:
    lines = file.readlines(100000)
    if not lines:
        break
    for line in lines:
        pass # 做一些操作

\n以每秒处理96,900行文本。\n其他作者建议使用islice()函数:\n

from itertools import islice
with open(...) as f:
    while True:
        next_n_lines = list(islice(f, n))
        if not next_n_lines:
            break
        # 处理next_n_lines

\nlist(islice(f, n))将返回文件f的下一个n行的列表。在循环中使用这个方法将以n行为单位分块读取文件。

0
0 Comments

Python读取大型文本文件的最快方法(几个GB)的问题是由于逐行读取文件导致速度变慢而出现的。解决方法是使用更高效的方法来读取文件,而不是逐行读取。下面是解决方法的代码:

with open(<FILE>, 'r') as file:
    lines = file.readlines()
    for line in lines:
        print line # or do some other thing with the line...

这种方法使用`readlines()`函数一次性读取整个文件,并将每一行存储在一个列表中。然后,可以使用`for`循环遍历列表中的每一行,并对其进行处理。

这种方法比逐行读取文件快得多,因为它减少了文件IO的次数。逐行读取文件需要将每一行都读入内存,并在处理完后关闭文件。而一次性读取整个文件只需要进行一次文件IO操作,然后将所有行存储在内存中,这样可以快速地对文件进行处理。

另外,这种方法还可以解决一个问题,即如果文件被截断,导致最后一个单词只读取了一部分的情况。因为一次性读取整个文件,所以不会出现截断单词的问题。

总之,通过一次性读取整个文件并使用`readlines()`函数将每一行存储在列表中,可以更快地读取大型文本文件。这种方法减少了文件IO的次数,提高了处理速度,并且不会出现截断单词的问题。

0