【问题标题】:How to load a big text file efficiently in python如何在python中有效地加载大文本文件
【发布时间】:2012-11-11 18:57:57
【问题描述】:

我有一个包含 7000 行字符串的文本文件。我必须根据几个参数搜索特定的字符串。

有人说下面的代码效率不高(速度和内存使用)。

f = open("file.txt")
data = f.read().split() # strings as list
  1. 首先,如果连列表都没有,我怎么开始搜索呢?
  2. 加载整个文件是否有效?如果没有,怎么办?
  3. 要过滤任何内容,我们需要搜索我们需要正确阅读的内容!

有点迷茫

【问题讨论】:

  • 只要它适合内存一次读取它可能是最快的(如果这是你的效率衡量标准)...
  • @JoranBeasley 我正在寻找速度和内存效率。中间解决方案是最好的。
  • 题外话,丹尼斯·里奇是你的真名吗?使用死者的名字对我来说似乎没有味道。
  • @MarkusUnterwaditzer 我不是丹尼斯·里奇(C 人)
  • @AshwiniChaudhary 的解决方案实际上比一次性加载(基于 %timeit 结果)更节省内存并获得更好的速度(这实际上让我感到惊讶......)

标签: python file search file-io full-text-search


【解决方案1】:

遍历文件的每一行,而不存储它。这将提高程序内存效率。

with open(filname) as f:
   for line in f:
      if "search_term" in line:
           break

【讨论】:

  • 如果内存使用量是您衡量效率的标准?对?但是,如果您所说的计算速度可能会更快加载一次? ...(尽管速度差异可能微不足道)...
  • @JoranBeasley 我认为在速度和内存方面应该这样做,而不是一次存储整个文件。
  • 但是,迭代超过 7000 行确实是一件大事。不是吗
  • @DennisRitchie 如果您基于文件的每一行进行过滤,那么存储整个文件不是一个好主意。
  • @AshwiniChaudhary 哦,你的权利......我做到了,所以没有匹配(强制最坏的情况),这种方法每次比一次加载整个文件快 9 我们......让我吃惊...(这是使用每行 1000 个字符和 7000 行的文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
相关资源
最近更新 更多