Python - excepciones propias en python

 
Vista:
Imágen de perfil de Natalia
Val: 14
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

excepciones propias en python

Publicado por Natalia (5 intervenciones) el 29/12/2020 21:08:16
Buenas tardes, estoy tratando de hacer un programa que lea un archivo que contiene nombres de estudiantes y sus notas y las escriba de forma ordenada, el programa debe estar protegido de errores y cualquier error debe parar el programa y ser notificado al usuario, he creado mis propias excepciones como clases que heredan de la clase Exception, la idea es que vaya entrando a cada excepción dependiendo del error que ocurra y al final si no entra en ninguna se captura el error con errno y se lo muestra al usuario, el problema es que me sale NameError: name 'errno' is not defined, y ya he intentado varias cosas y no he podido saber porque, les agradecería su colaboración, aquí les dejo el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from os import strerror
 
class ExcepcionDatosAlumnos(Exception):
       pass
 
class LineaErronea(ExcepcionDatosAlumnos):
       def __init__(self, linea):
              self.linea = linea
 
 
class ArchivoVacio(ExcepcionDatosAlumnos):
       def __init__(self, filename):
              self.filename = filename
              print('El archivo ',filename,' se encuentra vacio')
 
def leerNotas():
       notas = {}
       clin=0
       alumno=''
       nota=''
 
       try:
               name = input('Digite el nombre del archivo a leer: ')
               file= open(name,'rt')
               line = file.readline()
               if line=='':
                      ArchivoVacio(name)
                      return leerNotas()
               while line != '':
                     for ch in line:
                            if ch >='a' and ch <= 'z' or ch >= 'A' and ch <= 'Z':
                                    alumno += str(ch)
                            if ch.isdigit() or ord(ch)==46:
                                    nota += str(ch)
                     try:
                            if alumno in notas:
                               notas[alumno] += float(nota)
                            else:
                               notas[alumno]= float(nota)
                     except LineaErronea(clin):
                            print('Error en línea', linea)
 
                     alumno=''
                     num=''
                     nota=''
                     clin+=1
                     line = file.readline()
 
               for key in sorted(notas.keys()):
                      print(key,':', notas[key],end='\n')
 
 
       except Exception as e:
              if e.errno == errno.ENOENT:
                     print('El archivo no existe.')
              else:
                     print('El archivo no se pudo procesar', strerr(e.errno))
 
 
leerNotas()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

excepciones propias en python

Publicado por Jaime (136 intervenciones) el 01/01/2021 22:24:29
Compañero, lo que pasa es que no importas errno

1
2
from os import strerror
import errno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar