gpt4 book ai didi

python - 使用具有 python 2 和 3 兼容性的 getpass

转载 作者:行者123 更新时间:2023-11-28 22:42:06 26 4
gpt4 key购买 nike

我知道 getpass 在 Python 3 中返回一个 unicode 字符串,在 Python 2 中返回某种 str。但是,我不确定 Python 2 上的编码.

我如何才能将它返回的值转换为 UTF-8 编码的 bytes 对象,使其在 Python 2 和 3 中都能正常工作?

(我不使用 six,我正在尝试编写适用于两者的代码,而不是 iffing 版本号。)

最佳答案

在 Python 2 中,getpass() 返回一个普通的 Python 2 字符串,即字节字符串。它使用终端的编码,因此如果终端设置为使用 UTF-8,则您无需执行任何操作 - 它返回的字符串已经是 UTF-8 编码的字节字符串。但是为了健壮,你可以这样做:

import sys
from getpass import getpass

p = getpass()
if isinstance(p, bytes):
p = p.decode(sys.stdin.encoding)
p = p.encode('utf-8') # :D

我们使用 if isinstance(p, bytes): 来阻止 Python 3 接触 getpass() 返回的字符串,然后我们将 Unicode 编码为 UTF- 8

关于python - 使用具有 python 2 和 3 兼容性的 getpass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com