我希望能够对整个文件运行正则表达式,但我希望不必一次将整个文件读入内存,因为我将来可能会处理相当大的文件.有没有办法做到这一点?谢谢!
澄清:我无法逐行阅读,因为它可以跨越多行。
最佳答案
您可以使用 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/