python – 向可选参数添加必需参数

我想做的是非常基本的,但在浏览各种doc / tutorial时我找不到怎么做.也许我的整个方法都是错的.

例如,这可以正常工作,允许用户执行操作a或操作b

parser = argparse.ArgumentParser()
parser.add_argument("-do-a","--do_a",action="store_true",help="perform action a")
parser.add_argument("-do-b","--do_b",action="store_true",help="perform action b")
args = parser.parse_args()

现在让我们说动作b需要给出一个文件名.我该怎么执行呢?
一个不正确的解决方案,可以更好地了解我想要做的事情:

parser = argparse.ArgumentParser()
parser.add_argument("-do-a","--do_a",action="store_true",help="perform action a")
parser.add_argument("-do-b","--do_b",action="store_true",help="perform action b on file","--file",required=True)
args = parser.parse_args()

最佳答案 也许您可以将文件定义为选项-do-b的参数,如下所示:

parser = argparse.ArgumentParser()
parser.add_argument("-do-a", "--do_a", action="store_true",help="perform action a")
parser.add_argument("-do-b", "--do_b", action="store", type=str, nargs=1, default=False, help="perform action b on file")
args = parser.parse_args()

args.do_b将为False或具有单个字符串项的列表.

或者,您可以使用sub-parsers,但在您的情况下这更复杂且不必要.如果file参数对于选项do_b是可选的,则是必要的.

点赞