String Fomat Conversion
Steven Bethard
steven.bethard at gmail.com
Thu Jan 27 18:26:57 EST 2005
enigma wrote:
> Do you really need to use the iter function here? As far as I can
> tell, a file object is already an iterator. The file object
> documentation says that, "[a] file object is its own iterator, for
> example iter(f) returns f (unless f is closed)." It doesn't look like
> it makes a difference one way or the other, I'm just curious.
Nope, you're right -- that's just my obsessive-compulsive disorder
kicking in. ;) A lot of objects aren't their own iterators, so I tend
to ask for an iterator with iter() when I know I want one. But for
files, this definitely isn't necessary:
py> file('temp.txt', 'w').write("""\
... x y
... 1 2
... 3 4
... 5 6
... """)
py> f = file('temp.txt')
py> f.next()
'x y\n'
py> for line in f:
... print [float(f) for f in line.split()]
...
[1.0, 2.0]
[3.0, 4.0]
[5.0, 6.0]
And to illustrate Alex Martelli's point that using readline, etc. before
using the file as an iterator is fine:
py> f = file('temp.txt')
py> f.readline()
'x y\n'
py> for line in f:
... print [float(f) for f in line.split()]
...
[1.0, 2.0]
[3.0, 4.0]
[5.0, 6.0]
But using readline, etc. after using the file as an iterator is *not*
fine, generally:
py> f = file('temp.txt')
py> f.next()
'x y\n'
py> f.readline()
''
In this case, if my understanding's right, the entire file contents have
been read into the iterator buffer, so readline thinks the entire file's
been read in and gives you '' to indicate this.
Steve
More information about the Python-list
mailing list