Есть ли способ сделать python argparse.ArgumentParser рассматривать аргументы командной строки, как функции python обрабатывают аргументы? Так что аргументы могут передаваться без их имени?python argparse с именем позиционные аргументы?
ответ
См. Пример с целыми числами в documentation. Не включайте дефисы, и аргумент будет рассматриваться как позиционный аргумент.
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('first_supplied_argument', help='help')
>>> parser.add_argument('second_supplied_argument', help='help')
>>> args = parser.parse_args(['1', '2'])
Namespace(first_supplied_argument='1', second_supplied_argument='2')
Редактировать на основе комментариев:
возможность поставлять как позиционные и необязательные аргументы вы? Я думаю, вам все равно нужно будет предоставить хотя бы один позиционный аргумент.
parser = argparse.ArgumentParser()
parser.add_argument('--first', help='help')
parser.add_argument('first', nargs='?', help='help')
parser.add_argument('--second', help='help')
parser.add_argument('second', nargs='?', help='help')
print parser.parse_args(['1', '2'])
print parser.parse_args(['1', '--second', '2'])
print parser.parse_args(['--first', '1', '--second', '2']) # doesn't work
print parser.parse_args(['', '--first', '1', '--second', '2']) # probably not what you want to do
Выход:
Namespace(first='1', second='2')
Namespace(first='1', second='2')
Namespace(first=None, second=None) # doesn't work
Namespace(first='1', second='2')
Я хочу сохранить возможность использовать имена. Я хочу реплицировать функциональность, которую я получал бы от функции python. – David
Можете ли вы предоставить как позиционные, так и необязательные аргументы? –
Поверхностно это будет похоже, но не совсем то же самое. Вы сможете указать значения в любом случае. Но поведение, когда ни дано, ни когда оба используются, могут быть разными. – hpaulj
- 1. Позиционные аргументы Argparse с префиксом
- 2. Python argparse позиционные аргументы и подкоманды
- 3. Python argparse, позиционные аргументы и subparsers
- 4. Argparse - не ловить позиционные аргументы с `nargs`.
- 5. смешивания позиционные и необязательные аргументы в argparse
- 6. Argparse Позиционные аргументы или по умолчанию
- 7. Создайте парсер с подкомандами в argparse, настройте позиционные аргументы
- 8. Как добавить необязательные позиционные аргументы с подпараметрами в argparse?
- 9. Как использовать необязательные позиционные аргументы с аргументами nargs = '*' в argparse?
- 10. Может ли argparse связывать позиционные аргументы с именованными аргументами?
- 11. Python argparse: «нераспознанные аргументы»
- 12. python: взаимно исключающие позиционные аргументы
- 13. Отсутствующие позиционные аргументы? (python help)
- 14. Условные аргументы Python Argparse
- 15. Python argparse условные аргументы
- 16. python argparse: непризнанные аргументы
- 17. Общие позиционные аргументы в различных subparsers
- 18. Python argparse разобрать непризнанные аргументы
- 19. Python argparse игнорировать конкатенированные аргументы?
- 20. Ошибка Python argparse «непризнанные аргументы»
- 21. «Отсутствующие позиционные аргументы»
- 22. Переопределить позиционные и необязательные аргументы с другим аргументом в командной строке (модуль argparse python)
- 23. docopt позиционные аргументы не работают
- 24. Разбор позиционные аргументы
- 25. argparse аргументы гнездящиеся
- 26. Как я могу заставить Python ArgParse прекратить заменять позиционные аргументы в детском парсере
- 27. Python 2.7 Argparse Необязательные и обязательные аргументы
- 28. Дополнительные позиционные аргументы Повышение ценностиError
- 29. Обращение с неопределенным спаренные аргументы с argparse
- 30. Оставить аргументы нетронутыми с argparse
Короткий ответ: нет. – jonrsharpe