dir、tree、cd等等,都是我们常见的命令。这些命令是开发者开发出来的,如果我们自己想按照自己的想法开发一个命令,应该怎么做呢?
以python语言来实现,问题就是:如何使用python自定义命令?
需求场景如下:
1、cmd007 作为自定义命令名称
2、cmd007 hello --name=Lily 作为自定义功能1的名称hello打招呼,输出:Hi, Lily
3、cmd007 eat --food=fish 作为自定义功能2的名称food吃东西,输出:I like to eat fish
(一)目录结构如下:
cmd007 # 文件夹必须和自定义命令同名
│ __init__.py
│ __main__.py
(二)实现自定义命令和功能1
在__main__.py中
1 from __future__ import unicode_literals 2 import click 3 4 import os 5 import sys 6 7 __version__ = "1.1.dev2" 8 9 10 def verbose_option(f): 11 def callback(ctx, param, value): 12 pass 13 14 return click.option("-v", "--version", 15 is_flag=True, 16 expose_value=False, 17 help="Enable verbose output", 18 callback=callback)(f) 19 20 21 def quiet_option(f): 22 def callback(ctx, param, value): 23 pass 24 25 return click.option('-q', '--quiet', 26 is_flag=True, 27 expose_value=False, 28 help='Silence warnings', 29 callback=callback)(f) 30 31 32 def common_options(f): 33 f = verbose_option(f) 34 f = quiet_option(f) 35 return f 36 37 38 pgk_dir = os.path.dirname(os.path.abspath(__file__)) 39 40 41 @click.group(context_settings={'help_option_names': ['-h', '--help']}) 42 @click.version_option( 43 '{0} from {1} (Python {2})'.format(__version__, pgk_dir, sys.version[:3]), 44 '-V', '--version') 45 @common_options 46 def cli(): 47 """ 48 cmd007 - my cmd named cmd007 49 """ 50 51 52 # 自定义功能:hello 53 @cli.command(name="hello") 54 @click.option('-n', '--name', help="please input name") 55 @click.option('-c', '--count', help="print times", default=1) 56 def hello_command(name, count): 57 for x in range(count): 58 print("Hi, {0}".format(name)) 59 60 61 if __name__ == '__main__': 62 cli()