我的Python脚本使用文件名作为参数,然后根据此文件的内容添加更多参数。这是通过
完成的filename
)parser.parse_known_args()
检索固定参数filename
的内容添加一些动态参数parser.parse_args()
解析剩余的参数现在,我想使用argcomplete
启用制表符完成功能。因此,我想在第4步之前致电argcomplete.autocomplete(parser)
。但是,由于argcomplete
显然只运行到第2步,因此无法正常工作。
所以我的问题是:是否有一种方法可以自动完成在ArgumentParser
之后但在parser.parse_known_args()
之前添加到parser.parse_args()
的参数?
答案 0 :(得分:0)
查看argcomplete及其工作方式。您可以将其放置在parser.parse_known_args()
之后和parser.parse_args()
之前,但是这样做并不会给您带来太多好处,因为它运行脚本并检查提供的parser
来找出自动完成选项。它不会将任何参数(即到目前为止在命令行上输入的参数)传递给脚本。
当argcomplete被调用时,您的脚本将不知道传递了什么filename
以及应该动态添加哪些其他参数。
此外,如果在运行required=True
之前已将任何parser.parse_known_args()
参数添加到解析器中,则您实际上将永远不会运行argcomplete.autocomplete(parser)
,因为脚本的执行在到达之前就已经失败了后者(同样,出于自动完成的目的,脚本在不传递任何参数的情况下运行)。