Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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_Argparse - Fatal编程技术网

Python “如何更改文本”;“可选参数”;在argparse中

Python “如何更改文本”;“可选参数”;在argparse中,python,argparse,Python,Argparse,出于某种原因,我在程序中不使用位置参数,但只接受“可选”参数,通过narg='?'或action='store\u true'等工具控制参数是否真正可选。因此,帮助文本中的“可选参数”将具有误导性。我可以简单地显示为“参数”吗?谢谢。好吧,看看argparse源代码,在我看来,它就像覆盖解析器的标题一样简单。_optionals,如下所示: import argparse parser = argparse.ArgumentParser() for grp in parser._action_

出于某种原因,我在程序中不使用位置参数,但只接受“可选”参数,通过
narg='?'
action='store\u true'
等工具控制参数是否真正可选。因此,帮助文本中的“可选参数”将具有误导性。我可以简单地显示为“参数”吗?谢谢。

好吧,看看
argparse
源代码,在我看来,它就像覆盖
解析器的
标题一样简单。_optionals
,如下所示:

import argparse

parser = argparse.ArgumentParser()
for grp in parser._action_groups:
    if grp.title == 'optional arguments':
        grp.title = 'arguments'
...
parser._optionals.title = "my mandatory arguments, they are actually optionals, but I'll check for their presence"

也许我应该提到这是一个肮脏的黑客,你的整个想法有点疯狂,因为切换到位置参数非常容易,可选参数是可选的。

等等,我想你不能强制使用可选参数……啊,你的意思是,你是在手动检查它们的存在。这太疯狂了……当切换到位置参数非常容易时,你正在添加自己的检查,现在试图覆盖某些内置行为。@kirelagin我想让我的参数不“位置敏感”,所以我对所有参数使用“可选参数”。我认为两个答案都一样好。所以如果你不介意的话,我可以接受@falsetru的回答,因为他/她名声不好吗?@Ziyung嗯,当然,我不介意。但是我仍然建议使用我的答案,因为它直接做你需要的,而不需要重复所有的组和标题比较。我应该更清楚:我建议根本不要这样做。但是您显然不需要遍历所有组。当需要存在互斥组时,使用必需的“optionals”是一个完全有效的用例。非位置参数并不总是可选的。我知道文档不建议在add_参数中使用required=True,但仍然可以这样做,而且在某些情况下更有意义。首先,它使命令行本身比位置参数更具有自文档性。我认为这是一个矛盾修辞法,他们允许AddioTalk的要求=真参数,同时在自动生成的帮助文本中保留标题“可选参数:”谢谢你的答案,并将但我觉得@kirelagin的回答更直接,所以我会接受他的回答。