Re: 2.2 <-> 2.3 surprise

Discussion in 'Python' started by Shalabh Chaturvedi, May 31, 2004.

  1. Roman Suzi wrote:

    > Hi!
    >
    > I really like python 2.3 but sometimes I write for 2.2 too.
    >
    > New cool feature of doing:
    >
    > f = open('file')
    > for line in f:
    > do_something(line)
    >
    > works strange in 2.2: I can't just quit first loop and do:
    >
    > for line in f:
    > do_some_more(line)
    >
    > (I as skipping message header by first loop and processing body
    > the the second).
    >
    > In 2.3 it works as intended! Of course, simple refacture made it one loop...
    >
    >
    >
    > Sincerely yours, Roman Suzi


    This is probably the following change as described in
    http://www.python.org/2.3/highlights.html

    "File objects are now their own iterators. This makes multiple
    interrupted iterations over the same file more reliable."

    Something that *might* work in both 2.2 and 2.3 using multiple loops is
    (not tested):

    f = iter(open('file'))

    ....and then use f as before.

    --
    Shalabh
     
    Shalabh Chaturvedi, May 31, 2004
    #1
    1. Advertising

  2. Shalabh Chaturvedi

    Duncan Booth Guest

    Shalabh Chaturvedi <> wrote in
    news::

    > Something that *might* work in both 2.2 and 2.3 using multiple loops is
    > (not tested):
    >
    > f = iter(open('file'))
    >
    > ...and then use f as before.


    That is almost the correct idiom to use for code that must work in both 2.2
    and 2.3. It helps though if you save both the file and the iterator in
    variables otherwise you have no way to close the file when you are
    finished. So something like:

    theFile = open('file')
    f = iter(theFile)

    for line in f:
    ... do something and maybe break ...
    for line in f:
    ... and so on ...

    theFile.close()
     
    Duncan Booth, Jun 1, 2004
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. chris
    Replies:
    1
    Views:
    368
    John C. Bollinger
    Aug 19, 2003
  2. Jacek Dziedzic

    ifstream::get() surprise

    Jacek Dziedzic, Aug 26, 2004, in forum: C++
    Replies:
    5
    Views:
    4,200
    Jacek Dziedzic
    Aug 27, 2004
  3. John Hunter

    operator double() surprise in cxx

    John Hunter, Apr 30, 2004, in forum: Python
    Replies:
    7
    Views:
    409
    =?iso-8859-1?q?Beno=EEt_Dejean?=
    Apr 30, 2004
  4. Roman Suzi

    2.2 <-> 2.3 surprise

    Roman Suzi, May 31, 2004, in forum: Python
    Replies:
    0
    Views:
    352
    Roman Suzi
    May 31, 2004
  5. Roman Suzi

    Re: 2.2 <-> 2.3 surprise

    Roman Suzi, Jun 2, 2004, in forum: Python
    Replies:
    2
    Views:
    324
    Roman Suzi
    Jun 5, 2004
Loading...

Share This Page