安装Click
Click(Command Line Interface Creation Kit)快速构建命令行工具的库。
pip install click
基本使用
位置参数使用
# 位置参数的使用
@click.command()
@click.argument('name')
def greet(name):
click.echo('Hello %s' % name)
if __name__ == '__main__':
greet()
执行命令 :
python test2.py Alice
@click.command()
,标记函数是一个Click命令;@click.argument('name')
,定义一个位置参数name
,用户在命令行输入时需要提供这个参数;@click.echo()
,Click提供的一个输出方法媒体带标准的print
函数支持复杂的输入格式和颜色。
选项参数使用
# 选项相关参数
@click.command()
@click.argument('name')
@click.option('--greeting', default='Hello', help='Custom greeting message')
def greet(name, greeting):
click.echo(f'{greeting}, {name}!')
if __name__ == '__main__':
greet()
@click.option()
,定义一个选项--greeting
,默认值为:Hello,并且有一个帮助信息。选项可以出现在命令任意位置,不需要按照顺序输入。
执行命令 :
python test2.py Alice --greeting 'Good'
多命令应用
@click.group()
def cli():
pass
@click.command()
def initdb():
click.echo('Initializing the database...')
@click.command()
def dropdb():
click.echo('Dropping the database...')
cli.add_command(initdb)
cli.add_command(dropdb)
if __name__ == '__main__':
cli()
@click.group()
,定义一个命令组,包含多个子命令;@click.command()
,定义两个字命令initdb
和dropdb
;@click.add_command()
,将命令添加到命令组中。
执行命令:
# 初始化命令
python test.py initdb
# 删除命令
python test.py dropdb
参数类型与验证
@click.command()
@click.argument('number', type=int, default=1)
@click.option('--multiplier', type=int, default=2, help='Multiple for the number')
def multiply(number, multiplier):
if number < 1:
raise click.BadParameter('Number must be more less 1!')
result = number * multiplier
click.echo(f'{number} multiplied by {multiplier} is {result}')
if __name__ == '__main__':
multiply()
type=int
,确保nummber
参数必须是一个整数;click.BadParameter
,如果用户输入不符合要求,可以抛出BadParamter
异常,Click
会自动显示错误信息。
python test.py 5 --multiplier 3asd