7

我如何打印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
4

2 回答 2

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
于 2013-08-15T07:22:01.350 回答
1

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

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

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

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

于 2013-08-15T07:44:43.147 回答