概述
import os,cmd,sys,yaml import os.path as op import glob as gb def _complete_path(path): if op.isdir(path): return gb.glob(op.join(path,'*')) else: return gb.glob(path+'*') class CmdHandler(cmd.Cmd): def do_load(self,filename): try: with open(filename,'r') as f: self.cfg = yaml.load(f) except: print 'fail to load the file "{:}"'.format(filename) def complete_load(self,text,line,start_idx,end_idx): return _complete_path(text)
这适用于cwd,但是,当我想进入subdir时,在subdir /之后,complete_load函数的“text”变为空白,所以_complete_path func再次返回cwd.
我不知道如何使用tab-completion获取subdir的内容.
请帮忙!
import readline readline.get_completer_delims() # yields ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?'
import readline readline.set_completer_delims(' \t\n')
设置分隔符后,完成功能的’text’参数应该更符合您的预期.
这也解决了选项卡完成时复制部分文本时常见的问题.
总结
以上是编程之家为你收集整理的在Python的Cmd.cmd中完成filename tab-completion全部内容,希望文章能够帮你解决在Python的Cmd.cmd中完成filename tab-completion所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧