Input
Get input from a user in a terminal app
Text
After input()
, then Python waits for the user to enter input and press Enter, or to cancel with Ctrl+D.
On macOS and Linux, this seems to use the readline
shell command internally.
Help
From help(input)
:
Help on built-in function input in module builtins:
input(prompt=None, /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
Examples
Example in the console:
>> answer = input()
Hello, World
>>> answer
'Hello, World'
Or as a script:
answer = input()
print(answer)
Example with a prompt. Note the space after the prompt text.
>>> answer = input("What is your age? ")
What is your age? 31
>>> answer
"31"
>>> int(answer)
31
Put the question and answer on different lines using \n
and tell the user to enter input with >
symbol.
>>> input("What is your age?\n> ")
What is your age?
> 31
'31'
Here is a REPL. It runs in a loop, handling user input and printing repeatedly.
print("Square tool")
while True:
answer = input("Enter a number:\n> ")
squared = int(answer) ** 2
print(f"Squared: {squared}\n")
Running it:
$ python3 app.py
Enter a number:
> 2
Squared: 4
Enter a number:
> 4
Squared: 16
Deprecation note
Note that previously there was both and input
and raw_input
. Using input
would evaluate input as Python code using something like eval
internally. This turned for example numeric input from a string to an integer.
Now there is just input
. This is safe and will not run an evaluation as Python code.
Get password
Get the user to enter a password in the console.
The characters will be masked as invisible.
Usage
getpass.getpass()
getpass.getpass(prompt=CUSTOM_PROMPT, stream=OUTPUT_STREAM)
e.g.
import getpass
pword = getpass.getpass()
# Password:
pword
# 'my password'
In Unix, this uses this function:
>>> help(getpass.getpass)
unix_getpass(prompt='Password: ', stream=None)
Prompt for a password, with echo turned off.
Args:
prompt: Written on stream to ask for the input. Default: 'Password: '
stream: A writable file object to display the prompt. Defaults to
the tty. If no tty is available defaults to sys.stderr.
...
Examples
import getpass
try:
p = getpass.getpass()
except Exception as error:
print('ERROR', error)
else:
print('Password entered:', p)
Run it.
$ python3 app.py
Password: ****
Password entered: abcd