jhinak sen wrote:
hi,
i am a beginner in python language,

i am trying with this programme :
to find the addition and mean from a data set in a file and writing the mean
and sum in some other file :
""
*#! /usr/bin/env python

import re
import cPickle as p
import math
from numpy import *

f0= open("temp9","r+").readlines()
f2= open("out1","r+")
add_1=[ ];
for i in range(0, len(f0)):
        f1=f0[i].split()
        add= float(f1[1])+float(f1[2])
    mean= float(add)/2
        print (f1[1]).ljust(6) ,(f1[2]).ljust(6),repr(add).ljust(7),
repr(mean).ljust(7)
        add_1.append(add)
    add_1.append(mean)
        f2.write("%s" % repr(add).ljust(7)),f2.write("%s" %
repr(mean).ljust(7))
print "printing from file"
for i in range(0, len(add_1),2):
        print add_1[i],"        ", add_1[i+1]

f0.close()
f2.close()*


""

and this programme is givving me this error :

""    *Traceback (most recent call last):
  File "./temporary1.py", line 24, in <module>
    f0.close()
AttributeError: 'list' object has no attribute 'close'*
""

please help to to find the error.
or suggest some simpler or better way

note:
1)file "temp9" is already exist
2)this programme is giving me all my outputs, but at the end of the out
..its giving me that error.

Others have pointed out the specific problem that gives you this error. But I'd like to point out a few other things to consider:

1) Don't mix tabs and spaces. Best practice is to bind tab to (4) spaces in your editor, and never have a tab in a Python source file. 2) Think about your variable names. As it stands, f0 is a list of lines, f1 is a list of "word" within a line, and f2 is a file. No wonder you accidentally tried to close the list. I'd suggest things like:
     infile = open(....)
     lines = infile.readlines()
     outfile = open(....)

     for line in lines:
words = line.split(" ") or even val1, val2 = lines.split(" ")

  Then of course the last two lines become
  infile.close()
  outfile.close()

3) Learn to use the for statement directly on a list, rather than using len() on the list to make an index, then using the index to find the value
4) On the open() calls, get your modes right.  Looks like you really want
  infile = open(infilename, "r")
  outfile = open(outfilename, "w")
5) Consider using tuples in your add_1 list, rather than separate elements. That way, each element of the list would contain both sum and mean.
              add_1.append((add, mean))

      and the final print would become

   for item in add_1:
       print item[0],"        ", item[1]

6) Put anything over three lines into a function, instead of doing it at module scope. That way, you'll be clearer about what things are local to this code, and what might be useful to other code in the same module. In this case, infilename, and outfilename might be arguments to that function.

There are lots of other refinements, but these are all within your reach, and would make the program much clearer.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to