使用append()和readline在python中完成

时间:2012-12-07 08:42:09

标签: python linux append readline tab-completion

具体来说,我可以在Python中提供append()一个Null / None值吗?

我正在尝试向命令行应用程序添加自动完成功能,因此我使用readline来获取用户可能在raw_input提示符下键入的任何内容。

当我尝试选项卡(没有输入控制台的值)时出现问题并收到此消息:“append()只接受一个参数(0给定)”

以下是代码:

tokens = readline.get_line_buffer().split()
if not tokens or readline.get_line_buffer()[-1] == ' ':
    tokens.append()

我正在使用此处提供的示例,因为遍历功能树的深度不是问题: https://www.ironalbatross.net/wiki/index.php5?title=Python_Readline_Completions#Complex_problem_.28Regular_Grammar.29

3 个答案:

答案 0 :(得分:1)

tokens变量是list,因此列表方法append实际上只需要一个参数。

>>> a = []
>>> a
>>> []
>>> a.append(1)
>>> a
>>> [1]
>>> a.append()
>>> TypeError: append() takes exactly one argument (0 given)
>>> a.append(None)
>>> a
>>> [1, None]

答案 1 :(得分:0)

  1. 追加只需要一个参数

  2. 无对象无法调用追加功能

答案 2 :(得分:0)

好的,我设法修复它...当readline没有返回值时,不确定提供append()的值是什么,所以这样做并且它有效:

def complete(self,text,state):
try:
    tokens = readline.get_line_buffer().split()
    if not tokens or readline.get_line_buffer()[-1] == ' ':
        tokens.append(text)

谢谢你们!