Python命令行实现
Python命令行实现主要依赖于
click
模块。
click
是一个用于创建命令行接口(CLI)的 Python 包。它具有高度的可配置性,能够以尽可能少的代码创建出功能强大的 CLI 应用。
检查安装
首先,确认是否安装
click
, 没有安装执行下面命令安装
pip install click
演示示例
Hello word
例子
这是一个最小的 CLI 程序,用于向用户问好:
import click
@click.command()
@click.argument('name')
def hello(name):
click.echo(f'Hello, {name}!')
if __name__ == '__main__':
hello()
这个程序接收一个名为
name
的参数,然后输出问候语。如果将此代码保存为cli_hello.py
,你可以在命令行中运行:
python cli_hello.py Jack
输出将会是:
Hello, Jack!
使用选项
你可以使用
@click.option
装饰器为命令添加选项。例如:
import click
@click.command()
@click.option('--count', default=1, help='Number of loops .')
@click.argument('name')
def hello(count, name):
for _ in range(count):
click.echo(f'Hello, {name}!')
if __name__ == '__main__':
hello()
你可以通过以下方式运行这个程序:
python cli_hello.py --count 3 Jack
输出将会是:
Hello, Jack!
Hello, Jack!
Hello, Jack!
使用命令组
有时候你可能需要创建一个包含多个子命令的 CLI 工具。你可以使用
@click.group
来实现:
import click
@click.group()
def cli():
pass
@cli.command()
def initdb():
click.echo('Initialized the database')
@cli.command()
def dropdb():
click.echo('Dropped the database')
if __name__ == '__main__':
cli()
保存为 manage.py
后,可以这样运行:
python manage.py initdb
输出:
Initialized the database
或者:
python manage.py dropdb
输出:
Dropped the database
组合参数和选项
你可以将参数和选项组合在一起使用:
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--greeting', default='Hello', help='Greeting to use.')
@click.argument('name')
def hello(count, greeting, name):
for _ in range(count):
click.echo(f'{greeting}, {name}!')
if __name__ == '__main__':
hello()
运行:
python cli_hello.py --count 2 --greeting Hi Jack
输出:
Hi, Jack!
Hi, Jack!
小结
click
是一个非常强大的工具,可以帮助你轻松创建功能强大的命令行接口。通过组合使用@click.command
、@click.option
和@click.argument
等装饰器,你可以创建各种复杂的 CLI 应用。