我在一个 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/