Arnaud Delobelle wrote: > On Mar 26, 8:35 am, Gabriel Rossetti > <[EMAIL PROTECTED]> wrote: > >> 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. >> > > No, it isn't the empty string, it is the printable representation of > the empty string (because you wrap your f.read() calls in repr()), > which is the string "''": > > >>> print "''" > '' > > Why do you wrap f.read(...) in the repr() function? If you remove the > two repr() I suspect your code will work. > > OTOH do you know that the read() method of file objects does what you > want? You could simply write: > > file_str = f.read() > > Or are there some other factors that prevent you from doing this? > > -- > Arnaud > > Ok, like I mentioned in my second msg, I had put repr() there because I was getting errors because the ascii range (128) was exceeded, I tried cheating and telling it it was unicode but that didn't work, so I tried repr() and it gave me a string rep. of my data, that was ok. After that I tried using StringIO instead of what I had before, a list of strings that I later joined with an empty string. I just re-tried removing the repr() and it works with the StringIO version.
Thanks for all your answers, Gabriel -- http://mail.python.org/mailman/listinfo/python-list