[Python-ideas] "While" suggestion
Thomas Lee
tom at vector-seven.com
Thu Jul 3 16:21:41 CEST 2008
It's not currently possible to determine if a file/stream is at its end,
is it?
If that were the case you could easily do the read before your
do_something call. Something like:
while not my_file.eof:
data = my_file.read(1024)
do_something(data)
Can anyone explain why file objects don't support some sort of eof
check? Something gives me the impression that it was an intentional
decision.
IMO something like this would be better than more syntax.
Cheers,
T
Stavros Korokithakis wrote:
> Hello all,
> I have noticed that sometimes "while" loops produce "unpythonic"
> patterns, such as the following:
>
> data = my_file.read(1024)
> while data:
> do_something(data)
> data = my_file.read(1024)
>
> The assignment is repeated, which is less than optimal. Since we don't
> have a while statement that does the check in the end, would it not be
> better if the syntax of while could be amended to include something
> like this (in the spirit of the new "with" keyword)?:
>
> while my_file.read(1024) as data:
> do_something(data)
>
> This would terminate the loop when myfile.read() evaluated to False,
> and it is more pythonic than repeating onesself.
>
> I contacted GvR about this, and he replied that this syntax would have
> to be part of the expression than part of the while, which I agree
> would be less than ideal. However, I don't see why it would have to be
> part of the expression, since the "while" could easily assign the
> value of the expression to the variable and break if it evaluates to
> False.
>
> I would appreciate any thoughts on this,
> Stavros Korokithakis
> ------------------------------------------------------------------------
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
>
More information about the Python-ideas
mailing list