黑帽联盟

标题: python raw_input中使用tab键补全命令 [打印本页]

作者: 定位    时间: 2018-2-8 16:11
标题: python raw_input中使用tab键补全命令
用 readline, 以下是一个简单的例子
  1. import readline

  2. CMD = ['foo1', 'foo2', 'bar1', 'bar2', 'exit']

  3. def completer(text, state):
  4.     options = [cmd for cmd in CMD if cmd.startswith(text)]
  5.     if state < len(options):
  6.         return options[state]
  7.     else:
  8.         return None

  9. readline.parse_and_bind("tab: complete")
  10. readline.set_completer(completer)

  11. while True:
  12.     cmd = raw_input('==> ')
  13.     if cmd=='exit':
  14.         break
  15.     print(cmd)
复制代码
测试:
  1. ==> <TAB><TAB>
  2. bar1  bar2  exit  foo1  foo2
  3. ==> b<TAB>
  4. ==> bar
  5. ==> bar<TAB><TAB>
  6. bar1  bar2  
  7. ==> bar1
  8. bar1
  9. ==> exit
复制代码





欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5