我一直在玩cmd python模块,正在查看文本完成功能。我一直试图让它扩展/识别'〜'到我的主目录,但没有用。
我注意到我可以通过覆盖cmd模块中的completedefault(self, *ignored)
方法来处理默认完成。其中ignored
是文本元组,行,begidx,endidx。如果我输入命令my_command ./folder
,text
参数将为'./folder',这意味着我可以执行以下操作:glob.glob(text + '*')
,它返回该文件夹中所有文件的列表。但是,如果我现在my_command ~/folder
text
变量现在只包含/folder
,那么我无法使用os.path.expanduser(text)
来确定该文件夹的绝对路径并显示所有该文件夹中的文件。
基本上我想知道是否有人能指出我正确的方向,以便扩展其中~
的路径。
答案 0 :(得分:2)
扩展答案:https://stackoverflow.com/a/6657975/1263565
您可以使用以下方法覆盖cmd模块的completedefault()
方法:
def completedefault(self, *ignored):
# Set the autocomplete preferences
readline.set_completer_delims(' \t\n;')
readline.parse_and_bind("tab: complete")
readline.set_completer(complete)
完整的方法如下:
def complete(text, state):
return (glob.glob(os.path.expanduser(text)+'*')+[None])[state]
现在应该允许~
扩展。