[Python] Problema: TypeError!!!

fabio fossati fabiofos83 a yahoo.it
Ven 20 Apr 2007 11:52:47 CEST


Scusate se posto l'intero programma, ma sto diventando pazzo per cercare di capire perchè ad un certo pto il mio programma python mi da un TypeError.
Il programma è il seguente:


from Numeric import *
from string import *
import os

def Convert_value(input_file):
    number = input_file.readlines()
    number.sort()
    temp = []
    try:
        for i in range(len(number)):   ###  L'ERRORE SI VERIFICA QUI!!!!
            temp.append(float(number[i]))
    except TypeError:  
        print "Errore"
    return temp

def Create_file_out(lista,output_file,min,max,range):
    i=0
    printed=1
    count=0
    while(i < len(lista) and min < max):
        if(printed):
            output_file.write('range\t'+str(min)+'-'+str(min+range)+'\n\n')
        if(min <= lista[i] <= min+range ):
            temp=(str(lista[i]))
            output_file.write(str(temp)+'\n')
            i=i+1
            count=count+1
            printed=0
        else:
            output_file.write('#totale elementi range '+str(count)+'\n')
            min  = min+range
            count=0
            printed=1



lista_file=os.listdir("./input_file")

for j in range(len(lista_file)):
    try:
        input_file = open("./input_file/"+lista_file[j],"r")
    except IOError:
        print "file "+lista_file[j]+" non esiste"
    float_number=Convert_value(input_file)
    input_file.close()
    print "Viene creato il file di output per il file "+lista_file[j]+" preso come input"
    try:
        min = float(raw_input("Inserire il valore minimo: "))
        max = float(raw_input("Inserire il valore massimo: "))
        range = float(raw_input("Inserire il range desiderato: "))
    except ValueError:
        print "Non e'stato inserito un numero valido."
    output_file=open(lista_file[j]+"_out.txt","a")
    Create_file_out(float_number,output_file,min,max,range)
    output_file.close()


Quello che fa questo programma è prendere tutti i file che sono contenuti in una cartella di input, convertire il contenuto dei file da stringhe a float, ordinarli e contarli per intervallo di range.
Dove segnalo il problema accade che per il primo file che viene preso in considerazione dal programma, non entro nel blocco "except" quindi nn mi da errore; per il successivo file, qualunque esso sia, riporta il seguente errore per la riga da me segnalata:


Traceback (most recent call last):
  File "/home/fabio/aggiusta dati/data.py", line 44, in ?
    float_number=Convert_value(input_file)
  File "/home/fabio/aggiusta dati/data.py", line 10, in Convert_value
    for i in range(len(number)):
TypeError: 'float' object is not callable


I file che mando in input contengono un numero variabile di numeri float ovviamente espressi, nel file, come stringhe.

Vi prego aiutatemi, nn so dove sbattere la testa.

P.s. ho usato un debugger ma i valori i tipi ecc ... sono tutti quelli che mi aspetto e sono corretti.


Grazie.

Fabio




      ___________________________________ 
L'email della prossima generazione? Puoi averla con la nuova Yahoo! Mail: http://it.docs.yahoo.com/nowyoucan.html
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20070420/c8d39f2a/attachment-0001.htm


Maggiori informazioni sulla lista Python