如何在终端中打印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
答案 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
类型,应该适用于网络应用。