在终端上打印python os.urandom输出

时间:2013-08-15 07:18:23

标签: python

如何在终端中打印os.urandom(n)的输出?

我尝试使用fabfile生成SECRET_KEY,并输出24个字节。

我如何在python shell中实现两个变体的示例:

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

2 个答案:

答案 0 :(得分:8)

如果你想要的是十六进制编码的字符串,请使用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

答案 1 :(得分:1)

要仅使用内置函数,您可以使用ord获取整数值,然后将其转换回十六进制数字:

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

如果您只想要十六进制列表,则str()[2:]是不必要的

此版本和hexify()版本的输出都是str类型,应该适用于网络应用。