python 一个命令行的组件click

最近写python的代码比较多,一个比较明显的问题就是python的代码都是脚本,发布时由于脚本的缘故导致一堆的文件,很不方便,看了pyinstaller貌似3.6的可以打包成一个可执行文件。

到这一步需要一个-v的过程来表明当前程序是哪天打的包,gitlab的序列号是多少,以求得发布包的唯一性和可验证性。

显然,一个比较简单的命令行的框架就呼之欲出了

假设文件为demo.py

期望调用python demo.py -v显示版本

python demo.py -h显示帮助信息

python demo.py run执行正式的程序

代码如下:

import click


def _show_version():
    click.echo('Version 1.0.1')


def print_version(ctx, param, value):
    if not value or ctx.resilient_parsing:
        return
    _show_version()
    ctx.exit()


@click.group()
@click.help_option('-h', '--help')
@click.option('-v', '--version', is_flag=True, callback=print_version,
              expose_value=False, is_eager=True, help='show app version.')
def cli():
    pass


@cli.command(help='show app version.')
def version():
    _show_version()


@cli.command(help='run app.')
def run():
    print("run")


if __name__ == '__main__':
    cli()

这样,一个带命令行参数,能够显示version的简单框架即完成了。

注意的是, _show_version函数特意写简单了,正式的版本中应该是在打包之前获取到当天时间,配置文件中的版本号,gitlab中的前7位序列号,组成一个版本字符串存于某个version.txt中,每打一次包就运行一次前面的逻辑,打包后的程序再调用_show_version函数 将version.txt中的字符串读出并显示出来。

最后,这个框架最好能写成一个库,别的程序import,然后就自动有相应的功能了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的麦田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值