Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python readline模块文件夹名称完成_Python_Linux_Python 2.7_Cygwin_Readline - Fatal编程技术网

python readline模块文件夹名称完成

python readline模块文件夹名称完成,python,linux,python-2.7,cygwin,readline,Python,Linux,Python 2.7,Cygwin,Readline,我正在尝试为我的一个程序实现一个文件夹名完成,我正在为此使用模块。我已经编写了一个Completer类(文件autocompletion.py): 这里有一个小脚本try\u readline.py #!/usr/bin/env python from autocompletion import Completer import readline readline.parse_and_bind('tab: complete') readline.set_completer(Completer(

我正在尝试为我的一个程序实现一个文件夹名完成,我正在为此使用模块。我已经编写了一个Completer类(文件
autocompletion.py
):

这里有一个小脚本
try\u readline.py

#!/usr/bin/env python
from autocompletion import Completer
import readline

readline.parse_and_bind('tab: complete')
readline.set_completer(Completer().complete)
raw_input('Test it! > ')
#!/usr/bin/env python
import readline
from autocompletion import Completer

readline.parse_and_bind('tab: complete')
readline.set_completer_delims(' \t\n')
raw_input('Test it! > ')
我可以看到,只要我不尝试完成可以部分完成的dirnames,它就可以很好地工作。例如,当我创建具有以下结构的目录并通过shell运行程序时:

$ mkdir -p test/bla-foo test/bla-bar test/bla-baz test/something test/else
$ cp autocompletion.py try_readline.py test
$ cd test; tree
.
├── autocompletion.py
├── bla-bar
├── bla-baz
├── bla-foo
├── else
├── something
└── try_readline.py

5 directories, 2 files

$ python try_readline.py
我试图通过TAB完成
bla-
,结果是
bla-bla-
。我希望完成时坚持使用
bla-
,并展示可以完成的备选方案

我怎样才能做到这一点

编辑:

好吧,我不知道为什么会这样。如果我将
脚本更改为如下所示:

#!/usr/bin/env python
import readline

readline.parse_and_bind('tab: complete')
raw_input('Test it! > ')
因此,我没有使用自己的
Completer
,我在如上所示的相同文件夹结构上运行它,我可以看到类似的行为:

Test it! > bla-b<TAB>
Test it! > bla-bla-

我现在使用的是标准的readline补全,因为我不知道如何准确地编写正确的
补全程序。。。我想重新使用标准的readline completion功能,只需过滤掉任何非目录,但我不知道如何从模块中提取它。

Max OSX上似乎没有readline,但对于某些问题,可能会使用我的Max上没有安装的libedit。抱歉,那么必须有其他人来帮助您@holroy谢谢你看一看!Max OSX上似乎没有readline,但对于某些问题,可能会使用未安装在my Max上的libedit。抱歉,那么必须有其他人来帮助您@holroy谢谢你看一看!
Test it! > bla-b<TAB>
Test it! > bla-ba<TAB><TAB>
bla-bar/ bla-baz/
In [1]: readline.get_completer_delims()
Out[1]: ' \t\n`!@#$^&*()=+[{]}\\|;:\'",<>?'
#!/usr/bin/env python
import readline
from autocompletion import Completer

readline.parse_and_bind('tab: complete')
readline.set_completer_delims(' \t\n')
raw_input('Test it! > ')