2013-02-20 3 views
9

Я использую взаимоисключающую группу, но мне больше одного варианта быть в одном из эксклюзивных наборов. Я хочу, чтобы мое использование выглядело так:Настроить взаимоисключающие множества в argparse

[--conf CONF | --hostname HOSTNAME --port PORT] 

Любая идея, как это сопровождать? Я попытался добавить группу аргументов во взаимоисключающую группу, но часть взаимного исключения не относится к подгруппам, и она позволяет --conf file --hostname host --port 22

+0

Рассмотрите возможность сбрасывания '--hostname' и' --port' в одну запись '--host = HOST [: PORT]'. – nneonneo

ответ

3

Не ответ, который использует argparse, но возможное решение вашей проблемы: используя docopt вместо argparse, вы можете просто написать свои шаблоны использования и позволить docopt автоматически анализировать и проверять аргументы, переданные вашей программе. В вашем случае

prog_name (--conf CONF | --hostname HOST --port PORT) 

предоставит вам обоюдовую группу, которую вы хотите.

Смежные вопросы