Strange loop behavior
Diez B. Roggisch
deets at nospam.web.de
Wed Mar 26 04:42:06 EDT 2008
Gabriel Rossetti schrieb:
> Hello,
>
> I wrote a program that reads data from a file and puts it in a string,
> the problem is that it loops infinitely and that's not wanted, here is
> the code :
>
> d = repr(f.read(DEFAULT_BUFFER_SIZE))
> while d != "":
> file_str.write(d)
> d = repr(f.read(DEFAULT_BUFFER_SIZE))
>
> I also tried writing the while's condition like so : len(d) > 0, but
> that doesn't change anything. I tried step-by-step debugging using
> PyDev(eclipse plugin) and I noticed this, once the while was read once,
> it is never re-read, basically, the looping does happen, but just in
> between the two lines in the loop's body/block, it never goes on the
> while and thus never verifies the condition and thus loops forever. I
> had been using psyco (a sort of JIT for python) and so I uninstalled it
> and restarted eclipse and I still get the same thing. This looks like
> some bug, but I may be wrong, does anybody understand what's going on here?
>
> Thanks,
> Gabriel
>
> PS
> And yes I checked, the "d" variable is en empty string at some point, so
> the looping should stop.
But you used a superfluous repr. Look at this:
>>> repr("")
"''"
>>> repr("") == ""
False
>>>
So - get rid of the useless repr, then things should work.
Regarding the behavior in the debugger: that's an artifact of the
debugger that it doesn't step into that line, it doesn't change the way
the code works.
Diez
More information about the Python-list
mailing list