我在 Spyder 中使用 maskpass 来隐藏密码输入,但在使用 Shift 键输入大写字母和特殊字符时遇到问题。
我这部分的代码如下:
import maskpass
pwd = maskpass.advpass()
在测试过程中,我意识到输入不是读取大写字母或特殊字符(通过使用 Shift 驱动)。例如,“Abc123!”被读作“abc1231”。我尝试使用 Caps Lock 来处理大写字母,但这不起作用。关于为什么会出现这种情况以及如何解决它有什么想法吗? maskpass 是否无法处理区分大小写的密码和特殊字符?谢谢!
(Spyder 维护者在这里)不幸的是,通过
input
隐藏请求密码的库在 Spyder 中不起作用,抱歉。
这是由于 Jupyter 架构运行代码的限制,我们也在 Spyder 中使用该架构。所以没什么可做的。
我也使用 Spyder 作为我选择的 IDE,并且在尝试寻找解决方案时感到非常恼火。 Maskpass 看起来正是我所需要的,因为它宣传它可以与 Spyder 配合使用! (请参阅此主题):
警告:QtConsole不支持密码模式,您输入的文本 将可见。
但是,当我尝试使用
maskpass.advpass()
函数时,我也意识到它没有注册大多数系统在设置密码时所需的大小写更改和特殊字符(这就是我在这个线程上的原因)。然而,我突然意识到我的用户不会从 Spyder 访问我的脚本。我有一个用户运行的批处理文件,因此所有内容都在命令窗口中。所以我进行了测试。我创建了一个简单的登录功能:
def sp_login():
import maskpass
user_name = input('User name>> ').upper()
password = maskpass.advpass()
return password
print(password)
您是否知道,当我从批处理文件运行脚本时,它在我输入时返回正确的字母大小写和特殊字符。我仍然使用
maskpass.advpass()
而不是 .askpass()
,因为您仍然可以使用命令窗口中的左侧 CONTROL 键切换视图,我认为这对用户来说会派上用场。
所以,是的,Spyder 中的 maskpass 有问题,但如果您的用户不使用 Spyder 提供密码输入,您应该还是没问题的。希望这有帮助。