El vie., 24 feb. 2017 a las 16:26, Gonzalo V (<gvm2...@gmail.com>) escribió:
> Amigos, una consulta cortita > > tengo un error que es así: > Traceback (most recent call last): > File > "C:\Users\note\AppData\Local\Programs\Python\Python35-32\alumnos.py", line > 16, in <module> > vot=par.find_next().get_text() > AttributeError: 'NoneType' object has no attribute 'find_next' > > > > try: > par=soup.find(string=re.compile(alumno)) > vot=par.find_next().get_text() > titulo=soup.find('titulo').get_text() > > except AttributeError as e: > if e.args=='NoneType': > print('adasd') > sé capturar el AttributeError pero no sé como capturar solo el NoneType > para que haga algo si eso ocurre. > si no está el alumno, levanta Nonetype, pero no sé como capturarlo¿cómo se > hace? > > Las excepciones no almacenan ninguna información sobre las circunsancias que las han originado. Aún es más, los mensajes que usan no son parte de la API de python, por lo que ni siquiera es seguro que no cambien en una futura versión de python. Ahora te dice que el objeto que da error es de tipo NoneType, pero no tendría obligación de decirte nada. Las excepciones son poco más que objetos con los identificar de qué situaciones de error puedes recuperar la ejecución, y dejar el resto que sigan su curso. Si has identificado el tipo de error (AttributeError) lo que toca ahora es saber si ha sido algunos de los objetos que vigilas. Aunque no sea nada elegante, no queda más remedio que comprobar que cada búsqueda efectivamente devuelve algún resultado antes de trabajar con ella, lo que impide el encadenamiento normal de operaciones como quieres hacer (algo que en lenguajes funcionales se resuelve muy bien con monads). La mejor manera de "encadenar" operaciones que puedan fallar es usando expresiones if..else: par = soup.find(string=re.compile(alumno)) vot = par.find_next() if par else None text = vot.get_text() if vot else None if text is None: print("No hay resultados") > > Saludos, > Gonzalo > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://blog.ch3m4.org <http://ch3m4.org/blog>
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es