Hola César, tu solución es bastante correcta, lo único que te diría es que el except genérico, puede darte problemas. Deberías capturar la excepción que quieres.Me explico:
Imaginate que usas tu función, pero no has hecho un >from datetime import datetime si no que lo has importado como >import datetime o incluso no lo has importado ( siempre se nos puede olvidar ) Bueno, en ese caso, siempre te va a dar un False, aunque le pases un ts correcto, ya que la excepción NameError o AttributeError la estas capturando y enmascarando. Y eso es fuente de bugs muy "jodios" de cazar. podrías usar tu función como: def is_timestamp(var): try: datetime.fromtimestamp(var) return True except TypeError: return False except OSError: #llamada con un float("nan") return False except OverflowError: #llamada con un float("inf") return False aunque si no quieres, o estas en contra de usar tantos try/except, también puedes comprobar si es un valor numérico, aunque el float("nan") y el float("inf") tendrías que capturarlo también: def is_timestamp_no_try_except(var): return isinstance(var,float) | isinstance(var,int) Un saludo. El 5 de julio de 2017, 17:28, César García Tapia <ta...@openshine.com> escribió: > ¿Por qué no te gusta? Las excepciones sirven exactamente para eso. Que se > suelan usar para control de errores no significa que sea su único uso > correcto. > > Eso sí, siempre debes usar la excepción más específica posible, así que en > vez de "except" deberías poner "except TypeError", que es la excepción que > lanza fromtimestamp() si le pasas algo que no sea un número. > > Un saludo. > > > *César García Tapia* > Director técnico > Tlf: +34 663 273 481 <+34+663+273+481> > Skype: cesargarciatapia > <#m_-1228148143883588336_UNIQUE_ID_SafeHtmlFilter_> > Web: https://www.openshine.com/ > > El 3 de julio de 2017, 17:41, Nicolas lino <nicolasli...@gmail.com> > escribió: > >> Buenas. >> >> A alguien se le ocurre una manera mas prolija o una librería para hacer >> lo siguiente: >> >> >> >>> a >> 1499095933.289 >> >>> b >> 'asdasdsa' >> >>> def is_timestamp(var): >> ... try: >> ... datetime.fromtimestamp(var) >> ... return True >> ... except: >> ... return False >> ... >> >>> is_timestamp(a) >> True >> >>> is_timestamp(b) >> False >> >> >> No me gusta la idea de usar un try y forzar una excepción para validar si >> es un timestamp. Pero no se me a ocurrido nada mejor. >> >> >> Gracias! >> >> >> >> _______________________________________________ >> 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 > > -- -- Liso^TLOTB Bite my shiny metal ass
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es