【问题标题】:Using append() and readline for completion in python在 python 中使用 append() 和 readline 完成
【发布时间】:2012-11-25 10:14:30
【问题描述】:

具体来说,我可以在 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

【问题讨论】:

    标签: python linux append readline tab-completion


    【解决方案1】:

    好的,我设法修复它...当 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)
    

    谢谢大家!

    【讨论】:

      【解决方案2】:
      1. 只需要一个参数

      2. 没有一个对象不能调用追加函数

      【讨论】:

        【解决方案3】:

        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]
        

        【讨论】:

          猜你喜欢
          • 2014-01-04
          • 1970-01-01
          • 2014-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多