部分解析后使用 argcomplete

我的 Python 脚本将文件名作为参数,然后根据该文件的内容添加更多参数。这是由

  1. 添加固定参数(即filename

  2. 调用parser.parse_known_args()以检索固定参数

  3. 根据内容添加一些动态参数 filename

  4. 调用parser.parse_args()解析剩余参数

现在我想使用argcomplete. 因此,我想argcomplete.autocomplete(parser)在第 4 步之前调用。但是,这不起作用,因为argcomplete显然只运行到第 2 步。

所以我的问题是:有没有办法自动完成添加到ArgumentParserafterparser.parse_known_args()但 before 的参数parser.parse_args()


翻翻过去那场雪
浏览 207回答 1
1回答

ibeautiful

查看argcomplete及其工作原理。您可以将它放在 之后parser.parse_known_args()和之前parser.parse_args(),但它不会给您带来太多好处,因为它会运行您的脚本并检查parser提供的内容以找出自动完成的选项。它不向脚本传递任何参数(即到目前为止在命令行上输入的内容)。当 argcomplete 被调用时,您的脚本将不知道filename传递了什么以及应该动态添加哪些其他参数。此外,如果您在required=True运行之前已将任何参数添加到解析器中,parser.parse_known_args()您确实永远不会运行,argcomplete.autocomplete(parser)因为在到达后者之前,脚本的执行会在前者上失败(同样,为了自动完成,脚本在没有任何参数的情况下运行传递给它)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python