Я пытаюсь настроить argparse на моей программе python, но он не работает. Аргументы Пытаюсь процесса заключаются в следующем:Настройка argparse на Python 3.2
или «--interactive» или целое число для первого аргумента, один из них требуется
Любой один из либо «--xml» ИЛИ '--html' OR '--text' OR '--console'. Опять же, это может быть любой из них, но один из них требуется для второго аргумента
И, наконец, для третьего аргумента флаг «--verbose», который является необязательным.
Все эти аргументы изменяют переменные на True, кроме целого числа по первому аргументу.
Это код, который я есть на минуту:
import argparse
parser = argparse.ArgumentParser(description='Python Historical Event Calculator.',
prog='tempus.py')
inputs = parser.add_mutually_exclusive_group(required=True)
exports = parser.add_mutually_exclusive_group(required=True)
inputs.add_argument('integer', metavar='I', type=float,
help='percentage to use')
inputs.add_argument('-i','--interactive', dest='bool_interactive',
action='store_true', help='enter interactive mode')
exports.add_argument('-x','--xml', dest='bool_xml', action='store_true',
help='export output as xml')
exports.add_argument('--html', dest='bool_html', action='store_true',
help='export output as html')
exports.add_argument('-t','--text', dest='bool_text', action='store_true',
help='export output as plaintext')
exports.add_argument('-c','--console', dest='bool_con', action='store_true',
help='export output to console')
parser.add_argument('-v','--verbose', dest='verbose', action='store_true',
help='enter verbose/debug mode', required=False)
args = parser.parse_args()
Но я понятия не имею, если я нахожусь на правильном пути с этим, хотя, может кто-нибудь помочь? Означает ли это право или я сделал это совершенно неправильно?
Редактировать
Я получаю эту отслеживающий, когда я прохожу любой флаг ему:
Traceback (most recent call last):
File "C:\Users\Callum\Dropbox\Tempus\Feature Tests\argparsetest.py", line 9, in <module>
help='percentage to use')
File "C:\Python32\lib\argparse.py", line 1305, in add_argument
return self._add_action(action)
File "C:\Python32\lib\argparse.py", line 1528, in _add_action
raise ValueError(msg)
ValueError: mutually exclusive arguments must be optional
Почему вы не упрощаете и не изменяете его, поэтому ваши опции '--xml',' --html', '--text',' --console' становятся единым флагом, называемым '--output = x ', где' x' может быть 'xml',' html', 'text' или' console', а затем установить для этого значение по умолчанию? Аналогично, '--interactive' может быть необязательным, или' integer' может быть необязательным. В противном случае у вас будет больше логики, чтобы определить, что имеет преимущество над другими. – birryree
У вас есть ошибка? Если да, пожалуйста, покажите трассировку. На первый взгляд ваш код кажется функциональным даже, если вы должны рассмотреть аргументы birryree. Поэтому, если у вас нет ошибок, ваша запись принадлежит -imho- для просмотра кода: http: //codereview.stackexchange.com/ –
@Birryree: Как я могу изменить эти аргументы в этом формате? –