使用python开发命令行工具

安装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(),定义两个字命令 initdbdropdb
  • @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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值