2014-02-05 52 views
2

我一直在使用cmd python模块,并且正在查看文本完成函数。我一直试图让它扩展/识别'〜'到我的主目录,但无济于事。Cmd模块'〜'完成

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

基本上我想知道如果有人能指出我在正确的方向,以扩大其中的~路径。

+0

你需要隔离感兴趣的东西。 'expanduser('〜/ folder')'会给你你想要的。你能用'begidx' /'endidx'吗? – kwatford

回答

2

从上扩展了答案:用完整的方法看起来像

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] 

现在,这应该允许https://stackoverflow.com/a/6657975/1263565

您可以覆盖CMD模块的completedefault()~扩张。

+0

谢谢你的工作 – user3277112