为了账号安全,请及时绑定邮箱和手机立即绑定

Python写CLI命令行程序

标签:
Python

使用Python写命令行程序,以argparse是基础,但是有两个更好的工具可以选择,click和oslo.config

click

click可以用于简单的命令行程序,下面是我写的一个demo

https://github.com/xiaopeng163/click-demo

$ cd click-demo
$ python setup.py install
$ clickctl
Usage: clickctl [OPTIONS] COMMAND [ARGS]...

  Click Demo Command Line Interface

Options:
  -v, --verbose  show debug message.
  --help         Show this message and exit.

Commands:
  init    Initializes a controller cluster on master node.
  join    join the controller cluster as agent node
  status  Get cluster node list
$ clickctl init --help
Usage: clickctl init [OPTIONS]

Options:
  --advertise-addr TEXT  The REST Server advertise address  [required]
  --help                 Show this message and exit.

$ clickctl init --advertise-addr=1.1.1.1:80
Try to initialized the cluster
$ clickctl -v init --advertise-addr=1.1.1.1:80
Try to initialized the cluster
The REST Server advertise address: 1.1.1.1:80

oslo.config

可以用于大型复杂命令行程序的开发,特别是命令行参数和ini格式配置文件同时结合使用的命令行程序
我在yabgp/yabmp里使用了oslo.config, 命令行的效果如下:

python bin/yabmpd -h
usage: yabmpd [-h] [--config-dir DIR] [--config-file PATH]
              [--log-backup-count LOG_BACKUP_COUNT]
              [--log-config-file LOG_CONFIG_FILE] [--log-dir LOG_DIR]
              [--log-file LOG_FILE] [--log-file-mode LOG_FILE_MODE]
              [--nouse-stderr] [--noverbose] [--use-stderr] [--verbose]
              [--version] [--bmp-bind_host BMP_BIND_HOST]
              [--bmp-bind_port BMP_BIND_PORT] [--bmp-write_dir BMP_WRITE_DIR]
              [--bmp-write_msg_max_size BMP_WRITE_MSG_MAX_SIZE]

optional arguments:
  -h, --help            show this help message and exit
  --config-dir DIR      Path to a config directory to pull *.conf files from.
                        This file set is sorted, so as to provide a
                        predictable parse order if individual options are
                        over-ridden. The set is parsed after the file(s)
                        specified via previous --config-file, arguments hence
                        over-ridden options in the directory take precedence.
  --config-file PATH    Path to a config file to use. Multiple config files
                        can be specified, with values in later files taking
                        precedence. Defaults to None.
  --log-backup-count LOG_BACKUP_COUNT
                        the number of backup log file
  --log-config-file LOG_CONFIG_FILE
                        Path to a logging config file to use
  --log-dir LOG_DIR     log file directory
  --log-file LOG_FILE   log file name
  --log-file-mode LOG_FILE_MODE
                        default log file permission
  --nouse-stderr        The inverse of --use-stderr
  --noverbose           The inverse of --verbose
  --use-stderr          log to standard error
  --verbose             show debug output
  --version             show program's version number and exit

bmp options:
  --bmp-bind_host BMP_BIND_HOST
                        Address to bind the BMP server to
  --bmp-bind_port BMP_BIND_PORT
                        Port the bind the BMP server to
  --bmp-write_dir BMP_WRITE_DIR
                        The BMP messages storage path

环境变量

另外因为如今容器非常流行,对于容器应用程序的配置,命令行不是很方便,一般采用环境变量的传递方式,如

os.environ.get('MONGODB_URL', 'mongodb://127.0.0.1:27017')
点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消