在Python中读取大型文件(52mb)的行,是否更好地迭代行或使用readlines?

Kex*_*Ari 3 python file-io

我有一个txt文件中有400万个单词的列表,我想添加到列表中.我有两个选择:

l=[line for line in open(wordlist)]
Run Code Online (Sandbox Code Playgroud)

要么:

wordlist = file.readlines()
Run Code Online (Sandbox Code Playgroud)

readlines()似乎要快得多,我猜这是因为数据一次性读入内存.第一个选项对于节省内存会更好,因为它一次读取一行,这是真的吗?readlines()在复制时是否使用任何类型的缓冲区?一般哪种情况最好用?

Mar*_*ers 8

两个选项都将整个内容读入一个大的列表中.第一个选项较慢,因为您将循环委托给Python字节码.如果你想用文件中的所有行创建一个大的列表,那么没有理由在这里使用列表推导.

我没有使用任何.循环遍历文件并在循环时处理行:

with open(wordlist) as fileobj:
    for line in fileobj:
        # do something with this line only.
Run Code Online (Sandbox Code Playgroud)

通常不需要将整个未处理的文件数据保存在内存中.