Error en python

Luis Garcia Merino lgmerino en yahoo.com
Lun Nov 24 13:25:42 CET 2008


Hola Daniel,
has declarado readfile(file, self), pero debería ser readfile(self, file). Siempre self primero.

Un saludo,

          Luis




________________________________
From: Daniel González <ikarush en gmail.com>
To: Lista de discusión sobre python en castellano <python-es en aditel.org>
Sent: Monday, November 24, 2008 1:12:27 PM
Subject: [Python-es] Error en python

Hola a todos.
No encuentro cual es el error y la información de salida no me aporta demasiado.
El objetivo es crear una clase capaz de leer un fichero y obtener las
direcciones de correo contenidas en el.

El código es el siguiente :
/email_parser.py

# This Python file uses the following encoding: utf-8

import re

class parser:

    # Esta clase se encarga de administrar un array con las cuentas
    # de correo electronico.

    # Almacena las direcciones
    emails = []

    # Contenedor de una RE
    mailRE = ""

    # Contiene el total de coincidencias
    emails_total = 0
    # Contiene el total de lineas leidas
    lines_total = 0

     # Contine el numero de ficheros
    files_total = 0


    def __init__ (self):
        # Despliege de una expresion regular de email
        mailRE = re.compile(r'[\w\-][\w\-\.]+@[\w\-][\w\-\.]+[a-zA-Z]{1,4}')

    def readfile ( file , self ):

        # Inicializamos las variables parciales
        parcial = 0
        lines_parcial = 0
        mail = ""

        self.files_total = self.files_total + 1

        print " Reading file : " + str (file)
        file = open ( file , 'r')
        for line in file:

            lines_parcial = lines_parcial + 1

            # Coincidencias con la RE
            for mail in self.mailRE.findall(line):
                emails_parcial = emails_parcial + 1

                mail = mail.lower()
                self.mailRE.append (mail)

        # Lectura terminada, mostramos estadisticas

        print " file     : " + str (file) + " [ok] "
        print " lines     : " + str (lines_parcial)
        print " emails    : " + str (emails_parcial)

        # Y aᅢᄆadimos las estadisticas parciales al total

        self.files_total = self.files_total + 1
        self.emails_total = self.emails_total + emails_parcial
        self.lines_total = self.lines_total + lines_parcial

        def sort (self):

            u = {}
            item = ""

            print " Ordenando y filtrando los resultados "

            # Ordenamos el array
            self.emails.sort()

            # Eliminamos los duplicados
            for item in self.emails:
                u[item] = 1

            self.emails = u

        def write (file , self ):

            item = ""

            print " Guardando en el fichero " + str (file)
            file =  open ( file , 'w' )

            for item in self.emails:
                file.writelines ( item + "\n")


lo invoco de la siguiente manera:
/main.py

This Python file uses the following encoding: utf-8

import email_parser


parser = email_parser.parser()
parser.readfile('/home/dgonzalez/eclipse-workspaces/ReEmail/Inbox')

y el sistema reponde :
  File "/home/dgonzalez/python-workspaces/Search
Mails/src/search_mails/email_parser.py", line 36, in readfile
    self.files_total = self.files_total + 1
AttributeError: 'str' object has no attribute 'files_total'


pero no entiendo cual es el error.

¿Pueden ayudarme?



Daniel González Cerviño
tel 653965048
ikarush en gmail.com



      
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es