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