小编典典

如何逐行读取大文件?

all

我想遍历整个文件的每一行。一种方法是读取整个文件,将其保存到列表中,然后遍历感兴趣的行。此方法使用大量内存,因此我正在寻找替代方法。

到目前为止我的代码:

for each_line in fileinput.input(input_file):
    do_something(each_line)

    for each_line_again in fileinput.input(input_file):
        do_something(each_line_again)

执行此代码会给出错误消息:device active.

有什么建议?

目的是计算成对的字符串相似度,这意味着对于文件中的每一行,我想计算与其他每一行的 Levenshtein 距离。


阅读 116

收藏
2022-03-07

共1个答案

小编典典

读取文件的正确的、完全 Pythonic 的方法如下:

with open(...) as f:
    for line in f:
        # Do something with 'line'

with语句处理打开和关闭文件,包括是否在内部块中引发异常。将for line in f文件对象f视为可迭代对象,它会自动使用缓冲 I/O
和内存管理,因此您不必担心大文件。

应该有一种——最好只有一种——明显的方法来做到这一点。

2022-03-07