На данный момент у меня есть этот код:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-g", "--games", type=int, default=162,
help="The number of games to simulate")
args = parser.parse_args()
Не имеет смысла задавать отрицательное значение количества игр, но type=int допускает любое целое число. Например, если я запущу python Simulate_many.py -g -2, для args.games будет установлено значение -2, и программа продолжит работу, как будто все в порядке.
Я понимаю, что могу просто явно проверить значение args.games после анализа аргументов. Но могу ли я заставить argparse проверять это условие? Как?
Я бы предпочел, чтобы это работало таким образом, чтобы автоматическое сообщение об использовании могло объяснить требование пользователю. В идеале результат должен выглядеть примерно так:
python simulate_many.py -g -2
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid positive int value: '-2'
точно так же, как он сейчас обрабатывает аргументы, которые нельзя преобразовать в целое число:
python simulate_many.py -g a
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid int value: 'a'
Подробнее здесь: https://stackoverflow.com/questions/141 ... t-an-integ
Как я могу ограничить значение, анализируемое с помощью argparse (например, ограничить целое число положительными значен ⇐ Python
Программы на Python
1733149999
Anonymous
На данный момент у меня есть этот код:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-g", "--games", type=int, default=162,
help="The number of games to simulate")
args = parser.parse_args()
Не имеет смысла задавать отрицательное значение количества игр, но type=int допускает любое целое число. Например, если я запущу python Simulate_many.py -g -2, для args.games будет установлено значение -2, и программа продолжит работу, как будто все в порядке.
Я понимаю, что могу просто явно проверить значение args.games после анализа аргументов. Но [b]могу ли я заставить argparse проверять это условие? Как?[/b]
Я бы предпочел, чтобы это работало таким образом, чтобы автоматическое сообщение об использовании могло объяснить требование пользователю. В идеале результат должен выглядеть примерно так:
python simulate_many.py -g -2
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid positive int value: '-2'
точно так же, как он сейчас обрабатывает аргументы, которые нельзя преобразовать в целое число:
python simulate_many.py -g a
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid int value: 'a'
Подробнее здесь: [url]https://stackoverflow.com/questions/14117415/how-can-i-constrain-a-value-parsed-with-argparse-for-example-restrict-an-integ[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия