[Tutor] how to read from a txt file

jrlen balane nbbalane at gmail.com
Tue Mar 15 02:38:45 CET 2005


ok, i've done what sir Kent just said, my fault...

but an error still occurs:
Traceback (most recent call last):
  File "C:\Python23\practices\opentxtprintlngnew.py", line 18, in -toplevel-
    print process(data)
  File "C:\Python23\practices\opentxtprintlngnew.py", line 10, in process
    tempLine = int(line)
ValueError: invalid literal for int(): abc

isn't this the job of :

except TypeError:
            print "Non numeric character in line", line
            continue #Breaks, and starts with next line


On Mon, 14 Mar 2005 20:22:29 -0500, Kent Johnson <kent37 at tds.net> wrote:
> jrlen balane wrote:
> > import sys
> >
> > data_file = open('C:/Documents and Settings/nyer/Desktop/nyer.txt', 'r')
> > data = data_file.readlines()
> >
> > def process(list_of_lines):
> >     data_points = []
> >     for line in list_of_lines:
> >         try:
> >             tempLine = int(line)
> >         except TypeError:
> >             print "Non numeric character in line", line
> >             continue #Breaks, and starts with next line
> >
> >         data_points.append(tempLine)
> >         return data_points
> >
> > print process(data)
> >
> > ==============
> >
> > [1000]
> >
> > ==============
> > same result :( any other suggestion???
> 
> It doesn't look to me like you changed the 'return datapoints' line at all? Indentation is
> significant in Python; by indenting the 'return' past the 'for', you make the return part of the
> loop. The effect of this is to break out of the loop after the first line, which is what you are seeing.
> 
> Try this:
> 
> import sys
> 
> data_file = open('C:/Documents and Settings/nyer/Desktop/nyer.txt', 'r')
> data = data_file.readlines()
> 
> def process(list_of_lines):
>      data_points = []
>      for line in list_of_lines:
>          try:
>                tempLine = int(line)
>          except TypeError:
>                print "Non numeric character in line", line
>                continue #Breaks, and starts with next line
> 
>          data_points.append(tempLine)
>      return data_points #### This line was moved left four spaces
>                          #### now it is not part of the loop
> 
> print process(data)
> 
> Kent
> >
> > On Mon, 14 Mar 2005 19:57:26 -0500, Kent Johnson <kent37 at tds.net> wrote:
> >
> >>jrlen balane wrote:
> >>
> >>>this is what i get after running this on IDLE:
> >>>
> >>>import sys
> >>>
> >>>data_file = open('C:/Documents and Settings/nyer/Desktop/nyer.txt', 'r')
> >>>data = data_file.readlines()
> >>>
> >>>def process(list_of_lines):
> >>>    data_points = []
> >>>    for line in list_of_lines:
> >>>        try:
> >>>              tempLine = int(line)
> >>>        except TypeError:
> >>>              print "Non numeric character in line", line
> >>>              continue #Breaks, and starts with next line
> >>>
> >>>        data_points.append(tempLine)
> >>>        return data_points
> >>
> >>This line ^^^ is indented four spaces too much - you are returning after the first time through the
> >>loop. Indent it the same as the for statement and it will work correctly.
> >>
> >>Kent
> >>
> >>>print process(data)
> >>>
> >>>=================
> >>>[1000]
> >>>
> >>>==============
> >>>but this is what i have written on the text file:
> >>>
> >>>1000
> >>>890
> >>>900
> >>
> >>_______________________________________________
> >>Tutor maillist  -  Tutor at python.org
> >>http://mail.python.org/mailman/listinfo/tutor
> >>
> >
> >
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>


More information about the Tutor mailing list