Я думаю, что моя проблема очень похожа на этот вопрос, но он не точный, и, к сожалению, я не смог экстраполировать свое решение.
У меня есть несколько аргументов, которые я хочу использовать, только если для другого аргумента установлено значение «Ложь».В противном случае эти аргументы не должны быть обязательными и, по сути, не должны предоставляться.
В настоящее время мой код в основном выглядит следующим образом:
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()
Причина, по которой решение, на которое я ссылаюсь, не работает для меня, я подозреваю, заключается в том, что он просто проверяет, был ли конкретный аргументпрошло - это не проверка, что это за аргумент.Я подозреваю, что причина, по которой мое решение не работает, заключается в том, что, как только я установил аргументы в первый раз, код проверяет, какие аргументы были переданы, и, если есть какие-либо дополнительные аргументы (а именно, аргументы, которые я определю позже), он выдаетошибка.
Можете ли вы, ребята, придумать способ сделать это?