Python 在argparse期间,如何获取/记录arg列表中选项的索引

Python 在argparse期间,如何获取/记录arg列表中选项的索引,python,argparse,Python,Argparse,我希望在解析选项时将索引获取/记录到sys.argv列表中 我正在尝试用python脚本包装另一个程序。 在包装器脚本中,我试图解析与脚本相关的选项 并将它们从argv列表中删除,这样我就可以将其余的参数传递给正在包装的程序 为此,我使用parser.parse_known_args()以便不必跟踪程序可能支持的每个参数。只是那些对包装有意义的 现在,如果解析记录了需要删除的参数的索引 我可以在解析之后删除它们,并将剩余的参数传递给包装好的程序 在解析过程中如何记录此信息 并非所有对包装器有意义

我希望在解析选项时将索引获取/记录到sys.argv列表中

我正在尝试用python脚本包装另一个程序。 在包装器脚本中,我试图解析与脚本相关的选项 并将它们从argv列表中删除,这样我就可以将其余的参数传递给正在包装的程序

为此,我使用parser.parse_known_args()以便不必跟踪程序可能支持的每个参数。只是那些对包装有意义的

现在,如果解析记录了需要删除的参数的索引 我可以在解析之后删除它们,并将剩余的参数传递给包装好的程序

在解析过程中如何记录此信息


并非所有对包装器有意义的参数都应该删除。所以我需要有选择性

我不熟悉parser.parse\u known\u args()。我使用的是Python2.7,没有这样的函数。不过,您可以将原始sys.argv保存在say arg_列表中,然后执行以下操作

index=[arg_list.index(a)表示所选_参数中的a]


这将返回所选参数的索引列表(位置)。parse_known_args返回2个值,
名称空间
包含它知道的参数,以及它无法处理的字符串列表。我认为
rest
list是您希望传递给另一个程序的内容

换言之:

[args1, rest] = parser1.parse_known_args() # or (sys.argv[1:])
args = parser2.parse_args(rest)
如果无法为
parser2
提供参数的显式列表(例如,它被编码为
parse_args()
),则需要执行以下操作:

sys.argv[1:] = rest


我再次查看了
argparse
\u parse\u known\u args
的内部结构。它在参数字符串中迭代了几次。使用字符串的循环使用
,而start_indexn不应删除对包装器有意义的所有参数。所以我需要有选择地说,一个只知道要删除的参数的伪解析器怎么样?您不必对它解析的参数执行任何操作,而且解析不会耗尽或损坏sys.argv
。我添加了一个关于argparse如何迭代参数字符串的注释。