首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python argparse和bash完成

Python argparse和bash完成
EN

Stack Overflow用户
提问于 2011-12-05 23:48:21
回答 2查看 20.5K关注 0票数 61

我也想在参数中自动完成我的python脚本。

我从来没有真正理解过bash_completion是如何工作的(用于参数),但在我深入研究之后,我明白了:

  1. 它使用"complete“将补全函数绑定到命令
  2. 每个补全函数基本上都是参数解析器

的副本

第二点特别不好,因为我想让它自动生成。

最好的情况是,shell在每个TAB都会询问我的程序要完成什么,但我的印象是这不能真正工作,对吗?

第二种选择可能只是编写一个从argparse解析器到shell函数的转换器,该函数可以正确完成。

EN

回答 2

Stack Overflow用户

发布于 2012-11-26 03:50:47

无耻的自我推销:https://github.com/kislyuk/argcomplete

argcomplete为argparse提供bash完成。

票数 74
EN

Stack Overflow用户

发布于 2012-02-24 02:32:44

Bash "completion"真的很棒。而且对于用Python编写的程序来说也很容易....

我认为这正是您想要的:optcomplete: Shell Completion Self-Generator for Python。它是可用的,例如,Ubuntu中的"python-optcomplete“包。

您在python程序中插入几行代码,然后用户(一次)运行bash " complete“程序,告诉bash如何完成参数:

代码语言:javascript
复制
complete -F _optcomplete <program>

现在用户已经完成了!默认情况下,它在程序选项上提供简单的补全。有关如何自定义特定选项的完成工作方式的示例,请参阅示例。它写得很漂亮,并且很容易扩展到处理子命令,替代完成选项等!

更新:

有关zsh中的完成(对于optparse和argparse),请参阅genzshcomp 0.3.1 : Python Package Index

正如@englebip所指出的,我们仍然需要一些类似的东西用于Python2.7和3.2中引入的新argparse模块,因为optparse现在已被弃用。

下面是关于朝这个方向发展的讨论:

另请参阅此背景介绍如何完成此操作:How does argparse (and the deprecated optparse) respond to 'tab' keypress after python program name, in bash? - Stack Overflow

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8387924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档