Jackson Blankenship Jackson Blankenship - 2 years ago 624
Python Question

Masking user input in python with asterisks

I am trying to mask what the user types into IDLE with asterisks so people around them can't see what they're typing/have typed in. I'm using basic raw input to collect what they type.

key = raw_input('Password :: ')

Ideal IDLE prompt after user types password:

Password :: **********

Answer Source

Depending on the OS, how you get a single character from user input and how to check for the carriage return will be different.

See this post: Python read a single character from the user

On OSX, for example, you could so something like this:

import sys, tty, termios

def getch():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
        ch = sys.stdin.read(1)
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch

key = ""
sys.stdout.write('Password :: ')
while True:
    ch = getch()
    if ch == '\r':
    key += ch
print key
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download