2011-04-05 24 views
1

我需要在一個文件上運行正則表達式匹配,但我遇到了一個意外問題:文件太大而不能在一次調用中使用read()mmap(),文件對象不支持buffer()接口,而正則表達式模塊只需要字符串或緩衝區。Python:大文件上的正則表達式。簡單的方法?

有沒有簡單的方法來做到這一點?

+0

你的檔案有多大? – 2011-04-05 22:58:52

+1

正則表達式是否需要匹配多行,或者你可以做grep的等價物嗎? – geoffspear 2011-04-05 23:00:55

+0

大。它需要匹配多行。我現在正在採取一種不同的方法(不是生死攸關的情況),但我想知道,是不是有一種更簡單的方法來做到這一點? – slezica 2011-04-05 23:13:07

回答

5

Python mmap模塊提供了一種很好的Python內存映射文件的方式。在32位操作系統上,文件的最大大小將被限制爲不超過GB或兩個,但在64位操作系統上,您將能夠映射任意大小的文件(直到存儲當然,尺寸超過了2 )。

我已經在Python中以高達30 GB(維基百科XML轉儲文件)的文件完成了這項工作,並獲得了很好的結果。