On Sun, Dec 15, 2019, 2:21 PM Christopher Barker <[email protected]>
wrote:

> On Sun, Dec 15, 2019 at 6:40 AM David Mertz <[email protected]> wrote:
>
>> lines = get_lines_file_or_elswhere(resource)
>> header = next(lines, sentinel)
>> if looks_like_header(header):
>>     for line in lines:
>>         ...
>>
>
> Hmm, interesting -- so this means that you do write code expecting a
> generic iterator, rather than a file-like object.
>

How file-like do you need? I've certainly written things that usually take
an actual file, but sometimes get io.StringIO, or an SQL cursor.

On the other hand, I doubt I'd ever have the same handling of anything
coming from itertools.permutations().


data_file = get_lines_file_(resource)
> header = data_file.readline()
> if looks_like_header(header):
>     for line in data_file:
>         ...
>
> That is, I'm always expecting a file-like object, rather than a generic
> iterator. That may be because I developed habits long before files were
> iterators....
>

I'm 20 years with Python too. But one habit I've changed is to use next()
rather than .readline() in this sort of code. Even if my current need is
for a file-as-such, there's no reason to restrict that.

On the other hand, I use .readlines() and .read() plenty often enough.
Sometimes greedy and concrete is appropriate.
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/AKH4VA7JFJ5G5EDUGXGNITCD2T3P2747/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to