Muchas gracias por las respuestas.
> La solución termino saliendo por otro lado, pero me orientaron sobre la > idea y por que no es incorrecto el try/except. Saludos. El 6 de julio de 2017, 6:34, Angel Lis <anlis...@gmail.com> escribió: > Perdón César, > la respuesta era para Nicolas ;) > > El 6 de julio de 2017, 11:32, Angel Lis <anlis...@gmail.com> escribió: > >> 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_-806184798808518131_m_8858629466002260070_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 >> > > > > -- > -- > Liso^TLOTB > Bite my shiny metal ass > > _______________________________________________ > 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