gpt4 book ai didi

python-3.x - 在 IDLE 中关闭 getpass.getpass() 的 echo

转载 作者:行者123 更新时间:2023-12-03 08:24:19 27 4
gpt4 key购买 nike

我想在没有回显的情况下在 Windows 的 IDLE 终端中输入密码。

通常使用 python 使用函数 getpass.getpass() 可以输入密码,但在 IDLE 中会出现以下警告消息:

GetPassWarning: Can not control echo on the terminal. 
Warning: Password input may be echoed.

我发现,这是因为 IDLE 用不同的对象替换了 sys.stdin:

if sys.stdin is not sys.__stdin__:
return fallback_getpass(prompt, stream)

但是,我找不到解决办法。有没有人有答案或其他方法可以在没有回声的情况下将密码输入 IDLE 终端?

最佳答案

作为一名熟悉 IDLE 内部结构的 IDLE 维护者,我不认为可以抑制字符显示但不改变行为以响应 input('prompt')。无需对 IDLE 代码进行重大更改。

但即使这样对于 getpass.getpass 也是不够的因为它调用了 unix_getpass 之一, win_getpass , 或 default_getpass ,前两个使用 system_specific 低级函数,绕过 stdin。

在设计意图上:IDLE,顾名思义,就是一个程序开发环境。开发的程序通常,有时必须由 Python 直接执行,而无需通过 IDLE。 Python 通常在终端窗口中运行。 IDLE 的 Shell 基于 tkinter Text 小部件,它是一个多行编辑器,而不是终端。这就是为什么可以输入、调用和编辑完整的多行语句,而不是一次只能输入一行。

关于python-3.x - 在 IDLE 中关闭 getpass.getpass() 的 echo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43142132/

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