En Tue, 26 Jun 2007 15:57:33 -0300, Sebastian Bassi <sbassi-l3QW9mi/NR0r3pD5o9FTuti2O/[EMAIL PROTECTED]> escribió:
> Si, pero resulta que lo tuve que complicar un poco porque sha esta en > distintas librerias segun la version de Python y tambien no puedo > hacer un upper() directamente sin verificar que manden un string > primero. Tambien otra diferencia es que el encode64 en Python<2.5 > viene con un EOL mientras que en 2.5, no. Al final queda asi: > > def seguid(seq): > try: > #Python 2.5 sha1 is in hashlib > import hashlib > m = hashlib.sha1() > except: > #For older versions > import sha > m = sha.new() A mi me ponen nervioso los except sin nada :) asi que you usaria: except ImportError: Sino, estarias atrapando tambien *cualquier* otra excepcion, que quizas no tiene nada que ver con hashlib; por ejemplo, apretar Ctrl-C para abortar el programa no sirve cuando esta ejecutando justo esa parte del codigo. > if type(seq)!="str": > seq=seq.tostring().upper() > else: > seq=seq.upper() Aparte de los muy sabios consejos que te dieron sobre *no* testear el tipo explicitamente, hay que notar que así como está escrito, nunca se va a usar el tostring() porque "str" no deberia estar escrito entre comillas (deberia decir: if type(seq)!=str) > m.update(seq) > try: > #For Python 2.5 > return base64.b64encode(m.digest()).rstrip("=") > except: > #For older versions > import os > return base64.encodestring(m.digest())\ > .replace(os.linesep,"").rstrip("=") [Aparte del except, que deberia atrapar sólo AttributeError]. encodestring agrega un '\n', fijo, no usa os.linesep (que en Windows vale '\r\n', y entonces te fallaría). -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list