python - 如何重新搜索或重新匹配整个文件而不将其全部读入内存?

标签 python regex performance file

我希望能够对整个文件运行正则表达式,但我希望不必一次将整个文件读入内存,因为我将来可能会处理相当大的文件.有没有办法做到这一点?谢谢!

澄清:我无法逐行阅读,因为它可以跨越多行。

最佳答案

您可以使用 mmap 将文件映射到内存。然后可以像普通字符串一样访问文件内容:

import re, mmap

with open('/var/log/error.log', 'r+') as f:
  data = mmap.mmap(f.fileno(), 0)
  mo = re.search('error: (.*)', data)
  if mo:
    print "found error", mo.group(1)

这也适用于大文件,文件内容根据需要从磁盘内部加载。

关于python - 如何重新搜索或重新匹配整个文件而不将其全部读入内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/454456/

相关文章:

python - Pandas 向量化函数 cumsum 与 numpy

python - Pickler 中 __reduce__ 的具体用法是什么

Python 正则表达式 (regex) 匹配逗号分隔的数字 - 为什么这不起作用?

java - 匹配所有 java 导入的正则表达式,但具有特定结尾的除外

regex - 从字符串中切出一段并返回相反的部分

python - 列方式总和 V 行方式总和 : Why don't I see a difference using NumPy?

python - 遍历列表以在数据框中创建新列

Python 从外部 C 程序调用中输出带有换行符的字符串

php - 正则表达式:区分下划线(_)和破折号(-)

MySQL - LONGTEXT 字段导致 SELECT-WHERE 语句挂起