There are a few ways to get user keyboard input from the terminal:
- Using the
- Getting a password with
Let's look at each one now.
Get a single line of input
input() function in Python will let a user type in something to the terminal and press the return key.
Everything the user entered up to the return key will be recorded and stored as the return value.
For Python 2 it is
data_entered = input('Please enter some text: ') print(data_entered)
For more details, see https://docs.python.org/3/library/functions.html#input.
Accessing sys.stdin directly
sys.stdin is a file-like object so you can do the typical
Here are a few functions available:
sys.stdin.read()- This function can read multiple lines until a certain number of bytes (if specified) have been read or EOF. For example,
sys.stdin.read(5)will read they keys:
a\nb\ncand ignoring anything past the last byte read until the last return press.
sys.stdin.readlines()will read standard input line-by-line until EOF is reached.
For more details about
sys.stdin see https://docs.python.org/3/library/sys.html#sys.stdin.
import sys text = sys.stdin.read(10) # Read 10 bytes print(text)
import sys lines = sys.stdin.readlines() print(lines)
Get a password with getpass
getpass.getpass() function will not echo out the keyboard text a user enters, so when they type in a password, it won't be visible to everyone. It will still return a regular string though that can be printed out if desired. It is not any more secure than hiding the keyboard input.
from getpass import getpass # `getpass()` will hide the keyboard text from display password = getpass() print(password)
For more details see https://docs.python.org/3/library/getpass.html#getpass.getpass.
More about standard input, output, and error
If you want to learn more about standard input, output, and error in general, and how to redirect and pipe data, check out my tutorial: STDIN, STDOUT, STDERR, Piping, and Redirecting.
After reading this guide you should understand how to get user input using the
input() function, from
sys.stdin directly, and a get password using