2013-08-15 17 views
6

come posso stampare l'uscita di os.urandom(n) nel terminale?Stampa python os.urandom sul terminale

Provo a generare SECRET_KEY con fabfile e restituirò i 24 byte.

Esempio di come a implementare entrambe le varianti nella shell Python:

>>> import os 
>>> out = os.urandom(24) 
>>> out 
'oS\xf8\xf4\xe2\xc8\xda\xe3\x7f\xc75*\x83\xb1\x06\x8c\x85\xa4\xa7piE\xd6I' 
>>> print out 
oS�������5*������piE�I 

risposta

7

Se quello che vuoi è stringa esadecimale codificata, utilizzare binascii.a2b_hex (o hexlify):

>>> out = 'oS\xf8\xf4\xe2\xc8\xda\xe3\x7f\xc75*\x83\xb1\x06\x8c\x85\xa4\xa7piE\xd6I' 
>>> import binascii 
>>> print binascii.hexlify(out) 
6f53f8f4e2c8dae37fc7352a83b1068c85a4a7706945d649 
+0

Questa stringa con codifica esadecimale è uguale alla versione di byte? Per usarlo come chiave scret in una Webapp? – danbruegge

+0

@haengebruegge, no, non sono uguali ('out! = Binascii.hexlify (out)'). Non so cosa significhi 'webapp'. – falsetru

+0

Un sito Web creato con ad esempio django o pallone. Hanno bisogno sia di una chiave segreta. https://docs.djangoproject.com/en/dev/ref/settings/#secret-key o http://flask.pocoo.org/docs/api/#flask.Flask.secret_key – danbruegge

1

Per utilizzare appena costruito -ins, è possibile ottenere il valore intero con ord e quindi riconvertirlo in un numero esadecimale:

list_of_hex = [str(hex(ord(z)))[2:] for z in out] 
print " ".join(list_of_hex) 

Se si desidera solo la lista esagonale, poi il str() e [2:] sono inutili

L'uscita di questo e la versione hexify() sono sia di tipo str e dovrebbe funzionare bene per il web app.

+1

'str()' è completamente inutile - la funzione 'hex()' restituisce già una str ... – glglgl

Problemi correlati