阅 读 文 章

如何在raw_input输入时自动补全路径名?

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(linux_23) | 时间:2007-05-27 | 浏览:人次 ]


用readline.parse_and_bind("tab:complete")可以弄到命令名自动补全,可是好像路径名不行哦,比如/hom后按TAB键不能变成/home,要怎么设才能达到这个目的呢?



 wolfg 回复于:2005-09-21 10:33:52

rlcompleter只对python的模块名起作用吧


 linux_23 回复于:2005-09-21 10:47:30

那么怎么让路径和文件名补齐呢?


 wolfg 回复于:2005-09-21 11:40:09

引用:原帖由 "linux_23"]那么怎么让路径和文件名补齐呢?
 发表:



能说的具体些吗?你是想在你的python程序中让用户输入时可以自动补全吗?


 linux_23 回复于:2005-09-21 13:39:41

比如说吧,我想建立一个控制台交互式的程序。用户可以在控制台中输入我定义的命令和参数,来控制程序做一些事
假设我定义有这么一条命令:openfile /path/to/file
现在利用readline.parse_and_bind("tab:complete")可以做到自动补齐openfile的命令名(比如我输入op(TAB)就会显示openfile)。但是路径和文件名无法补齐(比如说/ho(TAB)就没法补齐成/home),用cmd模块的效果也是一样的。
我的问题就是如何在用户输入时做到可以按TAB自动补齐路径或者当前路径中的文件名?单单用readline或者cmd模块可以做到吗?


 xichen 回复于:2005-09-21 14:32:21

这个还不懂,抱歉。


 ygao2004 回复于:2005-09-22 20:03:31

试一试:Ipython
可满足你的要求。


 linux_23 回复于:2005-09-26 09:09:48

呵呵,我把cmd模块的complete函数改写覆盖了一下,现在凑合用了。


 wolfg 回复于:2005-09-26 10:05:56

引用:原帖由 "linux_23"]呵呵,我把cmd模块的complete函数改写覆盖了一下,现在凑合用了。
 发表:



怎么实现的?能否与大家分享?


 linux_23 回复于:2005-09-26 13:59:24

继承Cmd类,然后覆盖complete函数
def complete(self, text, state):
        """Return the next possible completion for 'text'.

        If a command has not been entered, then complete against command list.
        Otherwise try to call complete_<command>; to get list of completions.
        """
        if state == 0:
            import readline
            #重新设置过滤字符串。把/设成分割符。
            readline.set_completer_delims(' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>;?')
            origline = readline.get_line_buffer()
            line = origline.lstrip()
            stripped = len(origline) - len(line)
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 路径 自动 输入 如何 回复 compfunc linux_23 cmd text

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.