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=[] > Here's the problem. You are using the name "open" it two contexts. The variable named "open" is a local variable, and as such it hides the builtin function of the same name used to open files. (It does not matter that the use of "open" as a function precedes the use of "open" as a variable name. Python is rather strict about this. If you use a variable in a def, then ANYWHERE in that def, that name refers to the local variable and hides any uses of the name from enclosing scopes.) If that last makes sense, good. If not, then just follow this rule: Choose your variable names to be different than any builtin names -- or at least different than any of the builtin names you intend to use.
Gary Herron > 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 > > > -- http://mail.python.org/mailman/listinfo/python-list