On Tue, Mar 22, 2016 at 9:10 PM, Koos Zevenhoven
On Tue, Mar 22, 2016 at 8:41 PM, Ethan Furman
wrote: On 03/22/2016 10:51 AM, Michel Desmoulin wrote:
def foo(p): with open(p) as f: def begin: return x == "BEGIN SECTION" def end: return x == "STOP" return f[begin, end][:10000]
It's very clean, very convenient, very natural, and memory efficient.
Except the 10,000 limit doesn't happen until /after/ the end block is reached -- which could be a million lines later.
if f[begin, end] is a generator, the 10000 limit may happen before the end block is reached, which I think was the point.
I should add, though, that the the function should probably return list(f[begin, end][:10000]) or something, before the file f is closed. - Koos