相关疑难解决方法(0)

Python argparse和bash完成

我想在我的python脚本中也可以在参数中自动完成.

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

  1. 它使用"完成"将完成函数绑定到命令
  2. 每个完成函数基本上都是参数解析器的副本

第二点尤其不是很好,因为我想让它自动生成.

最好的事情是shell会在每个TAB上向我的程序询问要完成什么,但我的印象是这不能真正起作用,这是正确的吗?

第二个选项可能只是将一个转换器从argparse解析器写入一个正确完成的shell函数.

python argparse bash-completion

54
推荐指数
2
解决办法
2万
查看次数

使用自定义命令完成行

我的Python程序可以使用一系列不同的选项(或子命令)启动,如:

$ myProgram doSomething
$ myProgram doSomethingElse
$ myProgram nowDoSomethingDifferent
Run Code Online (Sandbox Code Playgroud)

我希望它使用自动完成,这样如果我输入"myProgram d"它返回"myProgram doSomething",如果我输入"myProgram n"它会呈现"myProgram nowDoSomethingDifferent".这与模块rlcompleter的平均使用类似,但它不从文件系统(或从历史记录)中选择可能的完成选项,而是从一组自定义字符串(对应于我的程序的可用选项)中选择

有关如何实现这一点的任何想法?

我知道变量PYTHONSTARTUP(它应该指向一个我不知道如何写的文件).

作为一个工作示例,django-admin(来自django包)具有我正在寻找的相同的功能

unix bash customization autocomplete

27
推荐指数
4
解决办法
1万
查看次数

在bash中,argparse(以及不推荐使用的optparse)如何响应python程序名后的"tab"按键?

我已经测试过optcomplete使用该optparse模块.它的例子是一个简单的文件,所以我可以让它工作.我也使用该argparse模块对其进行了测试,因为之前的模块已被弃用.但我真的不明白python程序是如何以及由谁在tab press上调用的.我怀疑bashshebang线和argparse(或optparse)模块一起涉及某种方式.我一直试图解决这个问题(现在要阅读源代码).

我有一个更复杂的程序结构,其中包含处理参数的代码片段的包装器.它的argparse.ArgumentParser()实例化和调用add_argument()- 它被超级映射到另一个中间模块以避免重复代码,以及被调用的包装 - 在函数内部.

我想了解这个标签完成在bash和python之间的工作方式(或者就任何其他解释器而言perl).

注意:我对bash完成有一个公平的理解(我刚刚学到了),我想我理解bash(仅)自定义完成.

注意:我已经阅读了其他类似的SO问题,并且没有人真正回答这个问题.

编辑:是bash函数.
我已经理解了python模块如何通过读取os.environ变量值 来了解在命令行中输入的单词

$COMP_WORDS
$COMP_CWORD
$COMP_LINE
$COMP_POINT
$COMPREPLY
Run Code Online (Sandbox Code Playgroud)

这些变量仅在按Tab键上具有值.我的问题是如何触发python模块?

python bash autocomplete shebang argparse

11
推荐指数
1
解决办法
2047
查看次数