Padding en
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Tue Jun 26 21:19:56 EDT 2007
En Tue, 26 Jun 2007 15:57:33 -0300, Sebastian Bassi
<sbassi-l3QW9mi/NR0r3pD5o9FTuti2O/JbrIOy at public.gmane.org> 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
More information about the Python-list
mailing list