2013-08-15 6 views
6

पर पाइथन os.urandom आउटपुट प्रिंट करें मैं टर्मिनल में os.urandom(n) के आउटपुट को कैसे मुद्रित कर सकता हूं?टर्मिनल

मैं fabfile के साथ एक SECRET_KEY उत्पन्न करने का प्रयास करता हूं और 24 बाइट आउटपुट करता हूं।

उदाहरण मैं कैसे अजगर खोल में दोनों वेरिएंट को लागू:

>>> 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 

उत्तर

7

क्या आप चाहते हैं हेक्स एन्कोड स्ट्रिंग है, तो binascii.a2b_hex (या 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

क्या यह हेक्स-एन्कोडेड स्ट्रिंग बाइट संस्करण के बराबर है? इसे वेबपैप में एक स्क्रेट कुंजी के रूप में उपयोग करने के लिए? – danbruegge

+0

@ हेंगब्रूज, नहीं, वे बराबर नहीं हैं ('बाहर! = Binascii.hexlify (बाहर)')। मुझे नहीं पता कि 'वेबएप' का क्या अर्थ है। – falsetru

+0

एक वेबसाइट उदाहरण के लिए django या फ्लास्क के साथ निर्माण। उन्हें एक गुप्त कुंजी दोनों की जरूरत है। https://docs.djangoproject.com/en/dev/ref/settings/#secret-key या http://flask.pocoo.org/docs/api/#flask.Flask.secret_key – danbruegge

1

सिर्फ बनाया का उपयोग करने के -इन, आप ord के साथ पूर्णांक मान प्राप्त कर सकते हैं और उसके बाद उसे हेक्स संख्या में परिवर्तित कर सकते हैं:

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

तुम सिर्फ हेक्स सूची चाहते हैं, तो str() और [2:] अनावश्यक

इस के उत्पादन और hexify() संस्करण दोनों प्रकार str कर रहे हैं और वेब अनुप्रयोग के लिए ठीक से काम करना चाहिए रहे हैं।

+1

'str()' पूरी तरह से अनावश्यक है - 'हेक्स() 'फ़ंक्शन पहले से ही एक स्ट्र ... – glglgl