Cmd模块'〜'完成

时间:2014-02-05 21:31:57

标签: python cmd tab-completion tilde

我一直在玩cmd python模块,正在查看文本完成功能。我一直试图让它扩展/识别'〜'到我的主目录,但没有用。

我注意到我可以通过覆盖cmd模块中的completedefault(self, *ignored)方法来处理默认完成。其中ignored是文本元组,行,begidx,endidx。如果我输入命令my_command ./foldertext参数将为'./folder',这意味着我可以执行以下操作:glob.glob(text + '*'),它返回该文件夹中所有文件的列表。但是,如果我现在my_command ~/folder text变量现在只包含/folder,那么我无法使用os.path.expanduser(text)来确定该文件夹的绝对路径并显示所有该文件夹中的文件。

基本上我想知道是否有人能指出我正确的方向,以便扩展其中~的路径。

1 个答案:

答案 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]

现在应该允许~扩展。