When you try some Sudo stuff in Linux, it prompts you to input the password, but nothing appears in the terminal window as you type (the password isn’t shown)?
Is it possible to achieve that in Python? I’m working on a script that involves a lot of private information, and I’d like to keep it hidden as I type it.
In other words, I’d like to retrieve the user’s password without having to reveal it.
Asked by Nacht
from getpass import getpass password = getpass()
An optional prompt can be passed as parameter; the default is “Password: “.
This function requires a good terminal to turn off echoing of typed text — for more information, see “GetPassWarning: Cannot control echo on the terminal” when running from IDLE.
Answered by Sven Marnach
import getpass pswd = getpass.getpass('Password:')
getpass is compatible with Linux, Windows, and Mac.
Answered by Nafscript
Getpass can be used for this.
Answered by RanRag
Instead of each letter, this code will print an asterisk.
import sys import msvcrt passwor = '' while True: x = msvcrt.getch() if x == '\r': break sys.stdout.write('*') passwor +=x print '\n'+passwor
Answered by Ahmed ALaa
@Ahmed ALaa’s response has been updated.
# 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 is exclusively for Windows, however PyPI’s getch should work for both (I only tested with linux). To make it work for Windows, you simply comment or uncomment the two lines.
Answered by Mostafa Hassan
Post is based on https://stackoverflow.com/questions/9202224/getting-a-hidden-password-input