iterating over lines in a file
gbp
gpepice1 at nycap.rr.com
Sat Aug 5 11:12:07 EDT 2000
That person is coming from a Perl background and in Perl all those
issues are taken care of automatically. Perl would not crash if given
an empty file.
Roger Upole wrote:
>
> I must take exception to your insistence that
> "Everything should be done ONCE, and only ONCE. In ONE
> place in the code."
> Besides sounding didactic, it is also completely false. In many cases,
> an initial read is necessary to determine how (or even if) the rest of a
> file will be processed. Also, different code may need to be called if
> the file is empty.
> Additionally, this overly simplistic programming style would be completely
> inadequate for most involved programming tasks.
> Roger Upole
>
> "Alex Martelli" <alex at magenta.com> wrote in message
> news:8l73an01lgb at news2.newsguy.com...
> > "Roger Upole" <rupole at compaq.net> wrote in message
> > news:hMrd5.49275$e6.2860918 at pouncer.easynews.com...
> > > Using an initial read is a common enough idiom in any language.
> >
> > It is extremely rare in languages which allow assignment in
> > expressions, and would normally denote lack of familiarity
> > with the language's idioms.
> >
> > > f=open('filename','r')
> > > fline = f.readline()
> > > while fline:
> > > ....
> > > fline = f.readline()
> >
> > Everything should be done ONCE, and only ONCE. In ONE
> > place in the code. This expands the abstract operation
> > "get next thingy if any" in two places, just because of a
> > language quirk.
> >
> > > > def readline(self):
> > > > line = self.source.readline()
> > > > self.line = line
> > > > return line # may be empty, thus false
> >
> > I don't see why not just:
> >
> > def readline(self):
> > self.line = self.source.readline()
> > return self.line
> >
> > Seems to have exactly the same semantics; the local-variable
> > line does not appear to be playing any role.
> >
> >
> > > > could somebody enlighten me, please? and is there any easier way to
> > > > iterate over lines in a file without resorting to ugly break
> statements?
> >
> > The fileinput module does just that in a very elegant way, IMHO:
> >
> > import fileinput
> >
> > for line in fileinput.input("myfile.txt"):
> > # do whatever you wish with line
> >
> >
> > Alex
> >
> >
> >
More information about the Python-list
mailing list