PyInputPlus
PyInputPlus is a Python 3 and 2 module to provide input()
- and raw_input()
-like functions with additional validation features. PyInputPlus was created and is maintained by Al Sweigart.
Installation
PyInputPlus can be installed from PyPI using pip:
pip install pyinputplus
On macOS and Linux, installing PyInputPlus for Python 3 is done with pip3:
pip3 install pyinputplus
If you run into permissions errors, try installing with the –user option:
pip install --user pyinputplus
The PySimpleValidate and stdiomask modules will also be installed as a part of PyInputPlus’s installation.
Quickstart
PyInputPlus will keep asking the user for text until they enter valid input. It’s recommended to import PyInputPlus with the shorter name pyip
.
>>> import pyinputplus as pyip
All of PyInputPlus’s functions begin with the input
, such as inputStr()
or inputDate()
. Collectively, they are referred to in this documentation as the input*()
functions.
For example, you can ask the user for an integer with inputInt()
, and the return value will be an integer instead of the string that input()
would normally return:
>>> input() 42 '42' >>> response = pyip.inputInt() # keep asking until an int is entered forty two 'forty two' is not an integer. 42 >>> response 42
You could specify a prompt, along with any restrictions you’d like to impose:
>>> response = pyip.inputInt('Enter your age: ', min=1) Enter your age: 0 Number must be at minimum 1. Enter your age: 2 >>> response 2
There are several functions for different common types of data:
>>> response = pyip.inputEmail() alinventwithpython.com 'alinventwithpython.com' is not a valid email address. al@inventwithpython.com >>> response 'al@inventwithpython.com'
You could also present a small menu of options to the user:
>>> response = pyip.inputMenu(['cat', 'dog', 'moose']) Please select one of the following: * cat * dog * moose cat >>> response 'cat' >>> response = pyip.inputMenu(['cat', 'dog', 'moose'], numbered=True) Please select one of the following: 1. cat 2. dog 3. moose 1 >>> response 'cat'
See the list of functions to get an idea of the kinds of information you can get from the user.
Common input*() Parameters
The following parameters are available for all of the input*()
functions. You can see this documentation by calling help(pyip.parameters)
:
>>> import pyinputplus as pyip >>> help(pyip.parameters) Help on function parameters in module pyinputplus: parameters() Common parameters for all ``input*()`` functions in PyInputPlus: * ``prompt`` (str): The text to display before each prompt for user input. Identical to the prompt argument for Python's ``raw_input()`` and ``input()`` functions. * ``default`` (str, None): A default value to use should the user time out or exceed the number of tries to enter valid input. * ``blank`` (bool): If ``True``, a blank string will be accepted. Defaults to ``False``. * ``timeout`` (int, float): The number of seconds since the first prompt for input after which a ``TimeoutException`` is raised the next time the user enters input. * ``limit`` (int): The number of tries the user has to enter valid input before the default value is returned. * ``strip`` (bool, str, None): If ``None``, whitespace is stripped from value. If a str, the characters in it are stripped from value. If ``False``, nothing is stripped. * ``allowlistRegexes`` (Sequence, None): A sequence of regex str that will explicitly pass validation. * ``blocklistRegexes`` (Sequence, None): A sequence of regex str or ``(regex_str, error_msg_str)`` tuples that, if matched, will explicitly fail validation. * ``applyFunc`` (Callable, None): An optional function that is passed the user's input, and returns the new value to use as the input. * ``postValidateApplyFunc`` (Callable, None): An optional function that is passed the user's input after it ha