gracias!! El 27 feb. 2017 20:23, "Chema Cortes" <pych...@gmail.com> escribió:
> 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 > >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es