-
Notifications
You must be signed in to change notification settings - Fork 111
/
prompt.py
39 lines (34 loc) · 1.25 KB
/
prompt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""Prompt user for yes/no answer to question.
From:
http://stackoverflow.com/questions/3041986/python-command-line-yes-no-input
"""
import sys
def query_yes_no(question, default="yes"):
"""Ask a yes/no question via raw_input() and return their answer.
Args:
question (str): A string that is presented to the user.
default (str): The presumed answer if the user just hits <Enter>. It
must be "yes" (the default), "no" or None (meaning an answer is
required of the user).
Returns:
(bool) True for "yes" or False for "no".
"""
valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False}
if default is None:
prompt = " [y/n] "
elif default == "yes":
prompt = " [Y/n] "
elif default == "no":
prompt = " [y/N] "
else:
raise ValueError("invalid default answer: '%s'" % default)
while True:
sys.stdout.write(question + prompt)
choice = raw_input().lower()
if default is not None and choice == '':
return valid[default]
elif choice in valid:
return valid[choice]
else:
sys.stdout.write("Please respond with 'yes' or 'no' "
"(or 'y' or 'n').\n")