import
readline
import
os
def
completer
(
text
,
state
)
:
ds
=
os
.
listdir
(
)
rs
=
list
(
filter
(
lambda
s
:
s
.
startswith
(
text
)
,
ds
)
)
if
state
<
len
(
rs
)
:
return
rs
[
state
]
return
None
readline
.
parse_and_bind
(
"tab: complete"
)
readline
.
set_completer
(
completer
)
input
(
)
-
形象理解的话,
state
其实就是第几选项的序号。 -
必须注意如果在函数中有错误的话,在你按下tab键后什么都不会发生(新手会在这里卡壳,还以为是环境问题)。要知道,
readline
非常高级地封装了你的函数,这样才能在input
中补全。但这对debug来说不见得是一件好事。较好的方法是先调用一下你的函数并检查输出,这样函数中的Exception会正常抛出。
# 加上这句:
completer
(
'foo'
,
0
)