使用 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 吗?
谢谢。
您可以随时修改 sys.args
并在此处放置任何您想要的内容。
至于你的主要问题,你可以有两个解析器。其中一个将有参数 -t
到 -h
,第二个将有参数 -n
和 -p
。然后你可以在每个解析器上使用 argparse
的 parse_known_args()
方法,它将只解析为每个解析器定义的参数。
python sample.py -t abc -r dfg -h klm -n -p qui
And I want argparse to parse from -t to -h and leave the remaining, also show help for these only. Next I want to parse any switch after -h into another function and see corresponding help there.
您的规范存在一些问题:
-h
是正规帮助吗?如果是这样,它具有优先权,生成 help
而不解析其他参数。 -h
之后的字符串表明您将其视为普通用户定义参数,然后需要在关闭帮助的情况下启动解析器。但是那你怎么要求 help
?
是什么设置了两者之间的中断 parsings/help?参数的数量、-h
标志(无论顺序如何)或标志的 id。请记住 argparse
接受任何顺序的标记参数。
您可以定义一个了解 -t
和 -r
的解析器,以及另一个处理 -n
和 -p
的解析器。使用 parse_known_args
调用每个函数可以使其在不引发 unknown argument
错误的情况下运行。
您还可以修改sys.argv
。 parse_args
(和已知变体)采用可选的 argv
参数。如果是 none,则它使用 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:])
尝试这些想法,如果还有其他问题,请回来找我们。
有没有办法使用 argparse 只解析函数中有限数量的开关?说吧,我的命令是:
python sample.py -t abc -r dfg -h klm -n -p qui
而且我希望 argparse 从 -t 解析到 -h 并保留其余部分,也仅显示对这些的帮助。 接下来我想将 -h 之后的任何开关解析为另一个函数并在那里查看相应的帮助。
这种行为在 argparse 中可能吗?还有一种方法可以修改它在内部使用的 sys.arg 吗? 谢谢。
您可以随时修改 sys.args
并在此处放置任何您想要的内容。
至于你的主要问题,你可以有两个解析器。其中一个将有参数 -t
到 -h
,第二个将有参数 -n
和 -p
。然后你可以在每个解析器上使用 argparse
的 parse_known_args()
方法,它将只解析为每个解析器定义的参数。
python sample.py -t abc -r dfg -h klm -n -p qui
And I want argparse to parse from -t to -h and leave the remaining, also show help for these only. Next I want to parse any switch after -h into another function and see corresponding help there.
您的规范存在一些问题:
-h
是正规帮助吗?如果是这样,它具有优先权,生成 help
而不解析其他参数。 -h
之后的字符串表明您将其视为普通用户定义参数,然后需要在关闭帮助的情况下启动解析器。但是那你怎么要求 help
?
是什么设置了两者之间的中断 parsings/help?参数的数量、-h
标志(无论顺序如何)或标志的 id。请记住 argparse
接受任何顺序的标记参数。
您可以定义一个了解 -t
和 -r
的解析器,以及另一个处理 -n
和 -p
的解析器。使用 parse_known_args
调用每个函数可以使其在不引发 unknown argument
错误的情况下运行。
您还可以修改sys.argv
。 parse_args
(和已知变体)采用可选的 argv
参数。如果是 none,则它使用 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:])
尝试这些想法,如果还有其他问题,请回来找我们。