Le 22/03/2016 20:26, Koos Zevenhoven a écrit :
On Tue, Mar 22, 2016 at 9:10 PM, Koos Zevenhoven
wrote: 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
Yeah the semantic of my function is wrong. It should rather expect a file like object as a parameter to avoid this bug. Plus, the begin() and end() functions are actually syntax errors ^^
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/