Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中高效加载大文本文件_Python_File_Search_File Io_Full Text Search - Fatal编程技术网

如何在python中高效加载大文本文件

如何在python中高效加载大文本文件,python,file,search,file-io,full-text-search,Python,File,Search,File Io,Full Text Search,我有一个包含7000行字符串的文本文件。我需要根据几个参数搜索特定的字符串 有些人说下面的代码效率不高(速度和内存使用) 首先,如果我甚至不把它列为一个列表,我怎么开始搜索呢 加载整个文件是否有效?如果没有,怎么做 要过滤任何东西,我们需要搜索,我们需要正确阅读 有点混乱在文件的每一行上迭代,而不存储它。这将使程序内存更高效 with open(filname) as f: for line in f: if "search_term" in line:

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

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

  • 首先,如果我甚至不把它列为一个列表,我怎么开始搜索呢
  • 加载整个文件是否有效?如果没有,怎么做
  • 要过滤任何东西,我们需要搜索,我们需要正确阅读
    有点混乱

    在文件的每一行上迭代,而不存储它。这将使程序内存更高效

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

    只要它能放在内存中,一次读它可能是最快的(如果这是你衡量效率的标准)…@JoranBeasley我在寻找速度和内存效率。中间解决方案最好。离题,丹尼斯·里奇是你的真名吗?使用死人的名字对我来说似乎毫无趣味。@MarkusUnterwaditzer我不是丹尼斯·里奇(C类人)@AshwiniChaudhary的解决方案实际上比一次加载所有文件(基于%的timeit结果)更节省内存,速度更快(这让我感到惊讶…)如果内存使用率是您衡量效率的标准,您会这样做吗?正确的?但是如果你的计算速度很快,那么马上加载可能会更快。。。(虽然速度差异可能很小)…@JoranBeasley我认为在速度和内存方面,应该这样做,而不是一次存储整个文件。但是,在7000行上进行迭代确实是件大事。不是吗it@DennisRitchie如果您是根据文件的每一行进行筛选,那么存储整个文件不是一个好主意。@AshwiniChaudhary哦,对了。。。我这样做是为了不存在匹配(强制最坏情况),这种方法每次比一次加载整个文件快9个us。。。令我惊讶的是。。。(这是使用每行1000个字符和7000行的文件
    with open(filname) as f:
       for line in f:
          if "search_term" in line:
               break