help me to find the error

Terry Reedy tjreedy at udel.edu
Fri Jul 10 15:30:04 EDT 2009


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

Welcome to Python.
> 
> 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 :

This is three things: input data from, perform calculation, output data 
to file. I would start simpler. See below.

You did two things right that too many people do not do.

1. You posted a complete chunk of code.

> ""
> *#! /usr/bin/env python
> 
> import re
> import cPickle as p
> import math
> from numpy import *

You never use these.
> 
> f0= open("temp9","r+").readlines()

[snip]
> f0.close()
> f2.close()*

2. You posted the complete traceback (instead of the annoying 'program 
didn't work ;-).

> ""    *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.

Seeing that, any of us could tell you thought f0 was a file but it was 
actually a list. Looking back up through the code, people found the 
definition -- the output of file.readlines, which is a list.

> or suggest some simpler or better way

Develop more incrementally. If you edit with IDLE, for instance, and hit 
RUN (F5), it takes about a second to see the result for a small program 
like this. I would have suggested starting with

data = [(1,2), (3,4)]
...
print "input: ", a, b, "output: ", tot, ave

and fill in ... until the output was correct.

Then change data to ['1 2', '3 4'] and revise until correct.

At that point, change data to open(....) and the program should 
otherwise work without change because a list of strings and a file are 
both iterators that produce a sequence of strings.

Now, if you want, worry about formating the output, removing the echo of 
the input.

Very last, send to output to a disk file instead of the screen. For 
development, that is a nuisance because it takes time to open the file 
to check results. So only do that when you already know the results are 
correct. Note that real programs used repeatedly ofter do not hard code 
an output file. If run from a command line in a comman window, screen 
output can be redirected to a file with '>': "myprog > outfile".

Terry Jan Reedy




More information about the Python-list mailing list