Beginner question: use function to read text file
James Stroud
jstroud at ucla.edu
Mon Jun 26 21:23:03 EDT 2006
Luke wrote:
> I'm pretty stuck at the moment and wondering if anyone can spot the problem.
> Trying to create a function that will read a text file into a list and
> return that list.
>
> I wrote the following function and saved it as 'fileloader.py'
>
> def fileload(fname):
> infile=open(fname)
> dates =[]
> times=[]
> open=[]
> high=[]
> low=[]
> close=[]
> vol=[]
> count=0
> for line in infile:
> item=line.split()
> dates.append(item[0])
> times.append(item[1])
> open.append(item[2])
> high.append(item[3])
> low.append(item[4])
> close.append(item[5])
> vol.append(item[6])
> #print
> dates[count],times[count],open[count],high[count],low[count],vol[count]
> count=count+1
>
>
> return dates,times,open,high,low,close
>
>
> Then I executed the following script (merge contract v1.py):
>
> import fileloader
> filename='c:/Python24/test/testdata2.txt'
> fileloader.fileload(filename)
>
>
> I then get the following error messages:
>
> Traceback (most recent call last)
> File "C:\Python24\test\merge contract v1.py", in line3, in?
> fileloader.fileload(filename)
> File ("C:\Python24\text\fileloader.py", in line2, in fileload
> infile=open(fname)
> UnboundLocalError: local variable 'open' referenced before assignment
> Script terminated
>
> Thanks for any help,
> Luke
>
>
def fileload(fname):
infile=open(fname) # <===
dates =[]
times=[]
open=[] # <===
You have assigned open (which, by the way, is a builtin!) in a function
*after* you have referenced it. You have over-ridden the open name with
the assignment, but you have referenced it 'before assignment', as your
error mesage says. This is a favorite trip-up of newer pythong
programmers. Perhaps replace
open=[]
with something like
open_=[]
etc.
James
--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095
http://www.jamesstroud.com/
More information about the Python-list
mailing list