【问题标题】:Odd output when trying to set up Flask secret key尝试设置 Flask 密钥时的奇怪输出
【发布时间】:2018-07-26 14:45:28
【问题描述】:

我正在研究如何部署 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'

【问题讨论】:

    标签: python flask byte


    【解决方案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),只是没有您碰巧生成的随机字符串那么多。

    【讨论】:

      猜你喜欢
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多