python - 在 Python 中读取大文件 (52mb) 的行,是迭代行还是使用 readlines 更好?

标签 python file-io

我在一个 txt 文件中有一个包含 400 万个单词的列表,我想将其添加到列表中。我有两个选择:

l=[line for line in open(wordlist)]

或:

wordlist = file.readlines()

readlines() 看起来快多了,我猜这是因为数据是一次性读入内存的。第一个选项更适合节省内存,因为它一次读取一行,这是真的吗? readlines() 复制时是否使用任何类型的缓冲区?一般哪个最好用?

最佳答案

这两个选项都将整个内容读入一个大列表中的内存中。第一个选项较慢,因为您将循环委托(delegate)给 Python 字节码。如果您想创建一个包含文件中所有行的大列表,则没有理由在此处使用列表理解。

我不会使用两者。循环遍历文件并在循环时处理行:

with open(wordlist) as fileobj:
    for line in fileobj:
        # do something with this line only.

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

关于python - 在 Python 中读取大文件 (52mb) 的行,是迭代行还是使用 readlines 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32276616/

相关文章:

java - 在 Android 中编辑现有文件

java - 在字符缓冲区的情况下,Java 中的 reader 内部如何工作?

file-io - 如何使用 Erlang OTP 模块修改文件中的一行

python - 升级到 OS X Mavericks 后,easy_install 和 pip 损坏

python - 正则表达式:匹配重复序列

python - 如何检查 urllib2 是否遵循重定向?

c++ - 我能否确定从文件中读取的 32 字节二进制数据等于 256 位?

vb.net - 删除 VB.Net 中的 "Invisible"控制字符

python - AdWords API TargetingIdeaPage 服务返回的数据格式是什么?

python - 拍照opencv + python 3.3