我需要在一个文件上运行一个regex匹配,但我面临一个意想不到的问题:文件太大,不能在一次调用中使用read()
或mmap()
,文件对象不支持buffer()
接口,regex模块只接受字符串或缓冲区。
是否有简单的方法来做到这一点?
Python mmap
模块提供了一种很好的Python友好的内存映射文件的方式。在32位操作系统上,文件的最大大小将被限制在不超过1 GB或2 GB,但在64位操作系统上,您将能够内存映射任意大小的文件(当然,直到存储大小超过264)。
我已经用Python完成了高达30gb的文件(Wikipedia XML转储文件),效果非常好。