Autocomplete 如何将readline与自动完成和自定义输出流一起使用?
我试图获得一种启用了自动完成功能并自动更新打印文本的shell 我的第一个想法是将标准输出封装到自定义对象中,并将每个属性访问重定向到原始标准输出对象。 只有write函数被重写以管理文本更新。 但一旦标准输出被对象包装器替换,自动完成就停止工作 下面是一个简单的示例,尝试添加一个空格前缀,它不适用于python2,但如果用输入替换原始输入,它适用于python3Autocomplete 如何将readline与自动完成和自定义输出流一起使用?,autocomplete,readline,python-2.x,Autocomplete,Readline,Python 2.x,我试图获得一种启用了自动完成功能并自动更新打印文本的shell 我的第一个想法是将标准输出封装到自定义对象中,并将每个属性访问重定向到原始标准输出对象。 只有write函数被重写以管理文本更新。 但一旦标准输出被对象包装器替换,自动完成就停止工作 下面是一个简单的示例,尝试添加一个空格前缀,它不适用于python2,但如果用输入替换原始输入,它适用于python3 import readline import sys class writer(object) : def write(s
import readline
import sys
class writer(object) :
def write(self, text):
sys.__stdout__.write(" "+text)
def __getattribute__(self, name):
if name == "write":
return object.__getattribute__(self,name)
return sys.__stdout__.__getattribute__(name)
def complete(suffix,index):
return [suffix+"a", suffix+"b", None][index]
if 'libedit' in readline.__doc__:
import rlcompleter
readline.parse_and_bind ("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete")
readline.set_completer(complete)
sys.stdout = writer()
while True:
print(raw_input(">"))
谢谢你的帮助