尝试设置Flask密钥时输出奇数

时间:2018-07-26 14:45:28

标签: python flask byte

我正在尝试找出如何部署Flask应用程序。 The docs说我可以使用Python命令生成密钥:

python -c 'import os; print(os.urandom(16))'

在他们的示例中,输出b'_5#y2L"F4Q8z\n\xec]/'

当我使用python运行它时,我得到了奇数字符,而当使用python3运行时,我得到了字符代码。为什么pythonpython3版本不同?我应该使用哪一个?

$ python -c 'import os; print(os.urandom(16))' 
��L���vl�6��Z5

$ python3 -c 'import os; print(os.urandom(16))'
b'A\xa4\xf3O\xdd\xf4qr\xfb\x9b\x12\x1f*\x0bm\xdf'

1 个答案:

答案 0 :(得分:1)

您应该对所有新项目都使用Python 3,因此从本质上讲这不是问题。 Python 3输出正确无误,可以直接复制粘贴。 python为您运行Python 2的事实意味着您没有按照教程设置Python 3 virtualenv,或者您的virtualenv未处于活动状态。

如果出于某种原因确实在使用Python 2,那么输出也很好。复制并将其粘贴到引号中,它将起作用。 Python 2的str是字节排序的,因此它输出非ASCII字符,而Python 3总是输出带有转义字符(\xAB)的字节。两种版本的输出都可以使用。

SECRET_KEY = '��L���vl�6��Z5'
SECRET_KEY = b'A\xa4\xf3O\xdd\xf4qr\xfb\x9b\x12\x1f*\x0bm\xdf'

示例输出的确包含转义字符(\n\xec),但不如您碰巧生成的随机字符串那么多。