我需要在文件上运行正则表达式匹配,但是我遇到了一个意想不到的问题:文件在一次调用中太大而不能read()
或mmap()
,文件对象没有支持buffer()
接口,regex模块只接受字符串或缓冲区。
有一种简单的方法吗?
答案 0 :(得分:5)
Python mmap
模块提供了一种很好的Python友好的内存映射方式。在32位操作系统上,文件的最大大小将限制为不超过GB或两个,但在64位操作系统上,您将能够内存映射任意大小的文件(直到存储当然,尺寸超过2 64 。
我在Python中使用高达30 GB的文件(Wikipedia XML转储文件)完成了这项工作,效果非常好。