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/ -- http://mail.python.org/mailman/listinfo/python-list