搜索大文件的一种方法是使用mmap
库将文件映射到大内存块中。然后,您可以搜索它,而不必显式阅读它。
例如,类似:
size = os.stat(fn).st_size
f = open(fn)
data = mmap.mmap(f.fileno(), size, access=mmap.ACCESS_READ)
m = re.search(r"867-?5309", data)
这对于非常大的文件非常有效(我已经为30+ GB的文件完成了此操作,但是如果您的文件超过一两个GB,则需要64位操作系统)。