gpt4 book ai didi

python - 如何在 argparse 中添加带有子解析器的可选位置参数?

转载 作者:太空狗 更新时间:2023-10-30 02:33:55 26 4
gpt4 key购买 nike

我正在尝试使用 argparse 模块向多个子解析器添加一个必需的输入文件名和一个可选的输出文件名。

这是我的尝试:

# test_argparse.py

import argparse

def setup_parser():

parser = argparse.ArgumentParser(prog='test_argparse.py',
formatter_class=argparse.RawDescriptionHelpFormatter,
description='Testing the argparse module.')

parser.add_argument('--version', action='version', version='%(prog)s 1.0')

subparsers = parser.add_subparsers()
parser_actionA = subparsers.add_parser('actionA')
parser_actionB = subparsers.add_parser('actionB')
parser_actionC = subparsers.add_parser('actionC')

parser.add_argument('infile', nargs=1, help='input mesh file name')
parser.add_argument('outfile', nargs='?', help='output mesh file name')

return parser

if __name__ == '__main__':
parser = setup_parser()
args = parser.parse_args()
print args

如果我执行这个:

python test_argparse.py actionA infile outfile

它不起作用,我得到的是:

usage: test_argparse.py [-h] [--version]
{actionA,actionB,actionC} ... infile [outfile]
test_argparse.py: error: unrecognized arguments: infile

最佳答案

用通用参数定义一个新的解析器,并将其作为 parents 传递给子解析器:

files = argparse.ArgumentParser(add_help=False)
files.add_argument('infile', nargs=1, help='input mesh file name')
files.add_argument('outfile', nargs='?', help='output mesh file name')

subparsers = parser.add_subparsers()
parser_actionA = subparsers.add_parser('actionA', parents=[files])
parser_actionB = subparsers.add_parser('actionB', parents=[files])
etc..

关于python - 如何在 argparse 中添加带有子解析器的可选位置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com