繁体   English   中英

使用python argparse解析有限的开关

[英]Parsing limited switches with python argparse

在使用argparse的函数中,是否可以解析仅有限数量的开关? 说,我的命令是:

python sample.py -t abc -r dfg -h klm -n -p qui

我希望argparse从-t解析到-h并保留其余的内容,并且也仅显示这些内容的帮助。 接下来,我想将-h之后的任何开关解析为另一个函数,并在那里查看相应的帮助。

在argparse中这种行为可能吗? 还有一种方法可以修改内部使用的sys.arg吗? 谢谢。

python sample.py -t abc -r dfg -h klm -n -p qui

我希望argparse从-t解析到-h并保留其余的内容,并且也仅显示这些内容的帮助。 接下来,我想将-h之后的任何开关解析为另一个函数,并在那里查看相应的帮助。

您的规范存在一些问题:

-h是常规帮助吗? 如果这样,它具有优先权,则在不解析其他参数的情况下提供help -h之后的字符串建议您将其视为普通的用户定义参数,然后需要关闭帮助来启动解析器。 但是,您将如何寻求help

是什么设置了两个解析/帮助之间的间隔? 参数的数量, -h标志(与顺序无关)或标志的id。 请记住, argparse可以按任何顺序接受标记的参数。

您可以定义一个知道-t-r解析器,另一个定义处理-n-p解析器。 通过使用parse_known_args调用每个parse_known_args可以使其运行而不会引发unknown argument错误。

您也可以修改sys.argv parse_args (以及已知的变体)采用可选的argv参数。 如果不存在,则使用sys.argv[1:] 因此,您可以修改sys.argv本身(删除项目),也可以将sys.argv的子集传递给解析器。

parser1.parse_known_args(sys.argv[1:5])
parser2.parse_known_args(['-n','one','-o','two'])
parser3.parse_args(sys.argv[3:])

尝试这些想法,如果还有其他问题,请与我们联系。

您始终可以修改sys.args并将所需的任何内容放在此处。

至于您的主要问题,您可以有两个解析器。 其中一个将具有-t-h参数,第二个-n-p 然后,您可以在每个解析器上使用argparseparse_known_args()方法,该方法将仅解析为每个解析器定义的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM