问题:在Python中获取命令行密码输入
您知道在Linux中尝试一些Sudo东西时如何告诉您输入密码,并且在键入时,终端窗口中什么都没有显示(密码未显示)?
有没有办法在Python中做到这一点?我正在编写一个脚本,该脚本需要非常敏感的信息,并希望在键入时将其隐藏。
换句话说,我想从用户那里获取密码而不显示密码。
回答 0
from getpass import getpass
password = getpass()
可以将可选提示作为参数传递;默认值为"Password: "
。
请注意,此功能需要正确的终端,因此它可以关闭键入字符的回显– 有关更多详细信息,请从IDLE运行时,请参见“ GetPassWarning:无法控制终端上的回显”。
回答 1
import getpass
pswd = getpass.getpass('Password:')
getpass可在Linux,Windows和Mac上使用。
回答 2
为此使用getpass。
getpass.getpass-提示用户输入密码而不回显
回答 3
此代码将打印一个星号,而不是每个字母。
import sys
import msvcrt
passwor = ''
while True:
x = msvcrt.getch()
if x == '\r':
break
sys.stdout.write('*')
passwor +=x
print '\n'+passwor
回答 4
15.7。getpass —便携式密码输入
#!/usr/bin/python3
from getpass import getpass
passwd = getpass("password: ")
print(passwd)
你可以在这里阅读更多
回答 5
更新@Ahmed ALaa的答案
# import msvcrt
import getch
def getPass():
passwor = ''
while True:
x = getch.getch()
# x = msvcrt.getch().decode("utf-8")
if x == '\r' or x == '\n':
break
print('*', end='', flush=True)
passwor +=x
return passwor
print("\nout=", getPass())
msvcrt仅适用于Windows,但从PyPI获取getch应该对两者都适用(我仅在linux上进行过测试)。您也可以注释/取消注释这两行,以使其适用于Windows。