Есть ли какой-нибудь короткий способ добиться того, что интерфейс командной строки APT ( Advanced Package Tool ) делает в Python?
Я имею в виду, когда менеджер пакетов запрашивает вопрос «да / нет», а затем [Yes/no]
сценарий принимает YES/Y/yes/y
или Enter(по умолчанию, Yes
как указано в заглавной букве).
Единственное, что я нахожу в официальных документах, input
и raw_input
...
Я знаю, что это не так сложно подражать, но это раздражает переписать: |
raw_input()
это называетсяinput()
.Ответы:
Как вы упомянули, самый простой способ - использовать
raw_input()
(или простоinput()
для Python 3 ). Нет встроенного способа сделать это. Из рецепта 577058 :Пример использования:
источник
elif choice in valid:
И я бы, наверное, вернул логическое значение.raw_input()
называетсяinput()
в Python3raw_input()
наinput()
для Python3.Я бы сделал это так:
источник
raw_input()
вызываетсяinput()
в Python3В
strtobool
стандартной библиотеке Python есть функция : http://docs.python.org/2/distutils/apiref.html?highlight=distutils.util#distutils.util.strtobool.Вы можете использовать его для проверки ввода пользователя и преобразования
True
илиFalse
значения.источник
f
Вероятно, означает «Ложь», иFalse == 0
поэтому я понимаю логику. Почему функция будет возвращатьint
вместо аbool
, для меня загадка.False
или0
(ноль). Ничего, еще , что оценивается с помощью функции Ей становится истинным и вернется:1
.if strtobool(string) is False: do_stuff()
.Очень простой (но не очень сложный) способ сделать это для одного выбора:
Вы также можете написать простую (немного улучшенную) функцию:
Примечание. В Python 2 используйте
raw_input
вместоinput
.источник
result = raw_input("message").lower() in ('y','yes')
Вы можете использовать щелчок «s
confirm
метод.Это напечатает:
Должно работать
Python 2/3
на Linux, Mac или Windows.Документы: http://click.pocoo.org/5/prompts/#confirmation-prompts
источник
как упомянул Александр Артеменко, вот простое решение с использованием strtobool
источник
sys.stdout.write
вместоprint
?strtobool()
не (из моих тестов) не требуетсяlower()
. Однако это не указано в документации.Я знаю, что на этот вопрос было дано множество ответов, и это может не дать ответа на конкретный вопрос OP (со списком критериев), но это то, что я сделал для наиболее распространенного варианта использования, и это намного проще, чем другие ответы:
источник
raw_input
был переименованinput
в питоне 3 stackoverflow.com/questions/21122540/…Вы также можете использовать суфлер .
Бесстыдно взято из README:
источник
Я изменил ответ fmark на python 2/3, более совместимый с python.
Смотрите служебный модуль ipython, если вы заинтересованы в чем-то с большей обработкой ошибок
источник
на 2.7 это слишком непитонично?
он фиксирует любое изменение Да, по крайней мере.
источник
Делаем то же самое с python 3.x, где
raw_input()
не существует:источник
Для Python 3 я использую эту функцию:
Функция strtobool преобразует строку в тип bool. Если строка не может быть проанализирована, она вызовет ValueError.
В Python 3 raw_input был переименован для ввода .
источник
Вы можете попробовать что-то вроде приведенного ниже кода, чтобы иметь возможность работать с вариантами из переменной 'accept', показанной здесь:
Вот код ..
источник
Как новичок в программировании, я обнаружил, что куча приведенных выше ответов слишком сложна, особенно если цель состоит в том, чтобы иметь простую функцию, на которую вы можете передавать различные вопросы «да / нет», заставляя пользователя выбирать «да» или «нет». Прочитав эту и несколько других страниц и позаимствовав все полезные идеи, я получил следующее:
источник
Как насчет этого:
источник
Это то, что я использую:
источник
Вот как я это сделаю.
Вывод
источник
Вот мое мнение, я просто хотел прервать, если пользователь не подтвердил действие.
источник
Пример очищенного Python 3:
источник