1. click 模块
click 模块和argparse功能相同,但更为易用,使用click分为两个步骤 :
1) 使用@click.command()装饰一个函数,使之成为命令行接口;
2) 使用@click.option()等装饰函数,为其添加命令行选项等。
import click
@click.command()
@click.option('--count',defalut=1,help='Number of greetings.')
@click.option('--name',prompt='Your name',help='The persion to greet')
def hellp(count,name):
'''simple program thar greets NAME for total of COUNT times...'''
for x in range(count):
click.echo('Hello %s !!!' % name)
if __name__ == '__main__':
hellp()
实例中,函数hellp接受两个参数count和name,他们的取值从命令行中获取,使用了click中的 command、option、echo,使用了prompt选项,因此在没有指定name参数时,click会提示我们在交互模式下输入。
通过nargs配置参数的个数,通过type设置参数的类型:
import click
@click.command()
@click.option('--pos',nargs=2,type=float)
def findme(pos):
click.echo('%s / %s' % pos)
type=click.Choice(['md5','sha1']) 只能选择两者其一。
如果需要从命令行输入密码,使用argparse 只能像输入普通参数一样,在click中只需要将prompt设为True,设置hide_input为True,就可以隐藏输入,达到输入密码的效果,设置confirmation_prompt为True,就可以两次验证,比如注册账号时需要输入两次密码。
2. prompt_toolkit 模块
prompt_toolkit 是一个处理交互式场景的开源库,用来取×××源的 redline 和 curses。特点包括:
1) 语法高亮
2) 支持多行编辑
3) 支持代码补全
4) 支持自动提示
5) 支持鼠标移动光标
6) 支持Emacs与 vi 风格快捷键
7) 支持查询历史
8) 对 Unicode 支持友好
简单示例:
#!/usr/bin/python
from __future__ import unicode_literals
from prompt_toolkit import prompt
while True:
user_input = prompt('>')
print("user_input")
这样交互式输入的时候就能使用Ctrl+a 或者 Ctrl+e等快捷键了,注意:在Python 2 中需要加入 from future import unicode_literals
实现历史输入:
from prompt_toolkit import prompt
from __future__ import unicode_literals
from prompt_toolkit.history import FileHistory
while True:
user_input = prompt('>',
history=FileHistory('history.txt'),
print(user_input)
还可以实现输入提示:
from __future__ import unicode_literals
from prompt_toolkit import prompt
from prompt_toolkit.history import FileHistory
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
while True:
user_input = prompt('>',
history=FileHistory('history.txt'),
auto_suggest=AutoSuggestFromHistory(),
)
print(user_input)
最后实现自动输入自动补全:
from prompt_toolkit import prompt
from __future__ import unicode_literals
from prompt_toolkit.history import FileHistory
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.contrib.completers import WordCompleter
SQLCompleter = WordCompleter(['select','update','drop','insert','delete'],ignore_case=True)
while True:
user_input = prompt('>',
history=FileHistory('history.txt'),
auto_suggest=AutoSuggestFromHistory(),
completer=SQLCompleter,
)
print(user_input)