argparse;обязательные аргументы, только если аргумент является ложным - PullRequest
0 голосов
/ 25 октября 2018

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

У меня есть несколько аргументов, которые я хочу использовать, только если для другого аргумента установлено значение «Ложь».В противном случае эти аргументы не должны быть обязательными и, по сути, не должны предоставляться.

В настоящее время мой код в основном выглядит следующим образом:

if __name__ == '__main__':
    parser = argparse.ArgumentParser()

    #Arguments that will always be mandatory
    #str2bool is a function I have to detect T/F, which I've verified works
    parser.add_argument('--null_variants_provided', type=str2bool, nargs='?',
                        help='Are you providing a list of null variants?
                              If not, more arguments will be required',
                              required=True)
    args = parser.parse_args()



    #Options that will sometimes be necessary
    if args.null_variants_provided is False:
        parser.add_argument('--LCR_regions_file', 
                             help='I need to be required if
                             above argument is False', required=True)
        args = parser.parse_args()

Причина, по которой решение, на которое я ссылаюсь, не работает для меня, я подозреваю, заключается в том, что он просто проверяет, был ли конкретный аргументпрошло - это не проверка, что это за аргумент.Я подозреваю, что причина, по которой мое решение не работает, заключается в том, что, как только я установил аргументы в первый раз, код проверяет, какие аргументы были переданы, и, если есть какие-либо дополнительные аргументы (а именно, аргументы, которые я определю позже), он выдаетошибка.

Можете ли вы, ребята, придумать способ сделать это?

...