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

如何使用python自定义命令

 

(二)实现自定义命令和功能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()
View Code

相关文章: