Anton Slesarev <[EMAIL PROTECTED]> writes: > f = open("bigfile",'r') > > flines = (line for line in f if pat.search(line)) > c=0 > for x in flines: > c+=1 > print c
It would be simpler (and probably faster) not to use a generator expression: search = re.compile('sometext').search c = 0 for line in open('bigfile'): if search(line): c += 1 Perhaps faster (because the number of name lookups is reduced), using itertools.ifilter: from itertools import ifilter c = 0 for line in ifilter(search, 'bigfile'): c += 1 If 'sometext' is just text (no regexp wildcards) then even simpler: ... for line in ...: if 'sometext' in line: c += 1 I don't believe you'll easily beat grep + wc using Python though. Perhaps faster? sum(bool(search(line)) for line in open('bigfile')) sum(1 for line in ifilter(search, open('bigfile'))) ...etc... All this is untested! -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list