Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 选项的argparse选项_Python_Python 3.x_Argparse - Fatal编程技术网

Python 选项的argparse选项

Python 选项的argparse选项,python,python-3.x,argparse,Python,Python 3.x,Argparse,我正在尝试在argparse中添加选项选项。 目前我有: group = parser.add_mutually_exclusive_group() group.add_argument("--md", help="Create xyz file for each ionic step for" " visualization", action='store_true') group.add_argument("--force", help="See wh

我正在尝试在
argparse
中添加选项选项。 目前我有:

group = parser.add_mutually_exclusive_group()
group.add_argument("--md", help="Create xyz file for each ionic step for"
                    " visualization", action='store_true')
group.add_argument("--force", help="See which atom has maximum force",
                    action='store_true')
group.add_argument("--opt", help="grep string from file",
                    nargs=2, metavar=("str", "file"))
parser.add_argument("--xsf", help="Create xsf file for md(default is xyz)"
                    " visualization", action='store_true')
parser.add_argument("-N", help="Showing first N line",
                    metavar='integer', type=int)
parser.add_argument("-n", help="Showing last n line",
                    metavar='integer', type=int)
args = parser.parse_args()
其中:

./foo.py --h
usage: foo.py [-h]
               [--md | --force | --opt str file]
               [--xsf] [-N integer] [-n integer]
但是我想要
--xsf
作为
--md
的子选项,
-N,-N
作为
--opt
的子选项;e、 g

./foo.py --h
    usage: foo.py [-h]
                   [--md [--xsf]| --force | --opt str file [-N integer] [-n integer]]
但我不知道如何做到这一点。也许我遗漏了什么,但在我的生活中没有这样的选择


还有其他方法吗?

互斥组机制非常简单,不适用于任何类型的嵌套或子组

有一个Python错误/问题要求更全面的分组机制,但建议的补丁相当复杂。问题不仅在于测试,还在于以用户友好的方式定义组,以及生成
用法
行。很高兴您包含了所需的用法,但该格式远远超出了当前帮助格式化程序的功能

你可能会考虑把你的问题重新定义为次级问题。子parser是互斥的(您只能给出一个命令名),您可以将
--xsf
指定为
md
的参数,将
-N
指定为
--opt
的参数。但下级警察也有自己的帮助问题


另一种方法是编写自己的
用法
,并在解析后自己测试参数。通过选择合适的默认值,您通常可以判断是否提供了参数(用户不能指定
None
),或者您可以忽略不必要的参数。

如果我将xsf添加到组中,它不能与md一起使用,它们将相互排斥。