新浦京81707con > 注册购买 > 使用Python轻松写出漂亮的命令行程序,携程机票

原标题:使用Python轻松写出漂亮的命令行程序,携程机票

浏览次数:108 时间:2019-05-06

学点编制程序,好处多多

1、requests等库的介绍

requests:发送请求,获取响应内容

docopt:命令行解析工具,能够依赖自定义的语法格式,自动生成解析器

prettytable:使用表格情势打字与印刷数据

colorama:命令行着色

1.宗旨的命令行

探访官方文书档案里的2个示范:

def main():
    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument('integers', metavar='N', type=int, nargs=' ',
                    help='an integer for the accumulator')
    parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

    args = parser.parse_args()
    print args.accumulate(args.integers)

这几行代码完毕的功效为:
一经命令行输入不带--sum采纳,则对输入的多个整数执行max操作;否则,执行sum操作。例如:
在指令行中施行:
python prog.py 1 2 3 4
输出为:4

在命令行中执行:
python prog.py 1 2 3 4 --sum
输出为:10

地点的代码中,重要的进度分成多个步骤:

  • 调用argparse.ArgumentParser的构造器创造多少个ArgumentParser对象。
  • 调用ArgumentParseradd_argument()主意增添命令行的参数,包含可选参数和必选参数。个中以---千帆竞发的代表可选参数,其余的意味必须输入的参数。
  • 调用parser.parse_args()主意对传播的sys.argv参数进行分析。

图片 1

3、安装相关的库

Python中的getoptoptparse模块都足以开展指令行程序的开拓,然则它们曾经被丢掉,在二.7和3.二版本中引进了argparse模块;这里介绍使用argparser模块,只须要数十行代码,就足以做出突出的下令行程序。

Python命令行分界面查询的成效是那般的:

二、开荒条件搭建

落草之初用来作为配置管理语言的Python,现在已经形成最盛行的编制程序语言之1,特别是随着AI应用的勃兴,变得五洲四海不在。

实际上,此小程序还足以开始展览,譬如将查询记录存到地头计算机(txt格式、大概存到数据Curry)只怕更加厉害的还足以设置定期自动查询;还是能够安装查询到自动发邮箱提示;还足以用Python的GUI库将此程序做成桌面软件的款式。。。。

安装prettytable库

pip install prettytable

3.小结

使用Python的argparse模块,短短的几十行代码就能够搭建起来2个指令行程序的骨架。

argparse模块中最首要的是ArgumentParser对象,它包罗了以下多少个情势:

  • add_argument()
  • add_subparsers()
  • parse_args()

有关那多少个办法的用法,以及参数的详实的求证请参考法定文书档案。

携程官方网址查询的功用是那般的:

自己评论碰到是不是不奇怪

图片 2

image

二.完结子命令

偶尔,大家得以凭仗效益将下令行分组成一名目多数相关的子命令。举例,Git命令行能够分为以下几组:

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone      Clone a repository into a new directory
   init       Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add        Add file contents to the index
   mv         Move or rename a file, a directory, or a symlink
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect     Find by binary search the change that introduced a bug
   grep       Print lines matching a pattern
   log        Show commit logs
   show       Show various types of objects
   status     Show the working tree status

grow, mark and tweak your common history
   branch     List, create, or delete branches
   checkout   Switch branches or restore working tree files
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   merge      Join two or more development histories together
   rebase     Forward-port local commits to the updated upstream head
   tag        Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch      Download objects and refs from another repository
   pull       Fetch from and integrate with another repository or a local branch
   push       Update remote refs along with associated objects

在Python中,利用argparse模块也能够很轻巧做出那样的子命令行程序。

比方说,大家要做1个对用户音信实行田间管理的一声令下行程序,蕴涵丰裕、删除、查询突显等多少个效用。

咱俩得以依附效益将其分成三个子命令:add,delete,show。

相应的代码能够这么写:

def main():
    parser = argparse.ArgumentParser(prog='cmd')

    sub_parser = parser.add_subparsers(title='subcommands',
                                    description='valid subcommands',
                                    help='config subscommand help')

    add_parser = sub_parser.add_parser('add',help='add user config')
    add_parser.add_argument('--name', required=True, help='user name')
    add_parser.add_argument('--addr', required=False, help='user address')
    add_parser.add_argument('--phone', required=False, help='phone number')
    add_parser.set_defaults(func=add_fn)

    delete_parser = sub_parser.add_parser('delete', help='delete user config')
    delete_parser.add_argument('--name', required=True, help='user name')
    delete_parser.set_defaults(func=delete_fn)

    show_parser = sub_parser.add_parser('show', help='show user config')
    show_parser.set_defaults(func=show_fn)

    args = parser.parse_args()
    args.func(args)

对地点的代码实行概要的解说:ArgumentParser对象的add_subparsers()格局成立了二个例外的action实例,对这几个实例分别调用add_parser()主意来成立子命令对应的ArgumentParser,再调用这些ArgumentParser实例的add_argument()方法来增添子命令的参数。
三个比较便宜的地点在于,能够经过ArgumentParserset_defaults()方法来设置子命令对应的管理函数。上边的躬行实践中,分别为多少个子命令设置了管理函数:add_fndelete_fnshow_fn

在命令行程序中实行:
python cmd.py --help,将显示出以下新闻:

usage: 
    cmd [sub-command]

optional arguments:
  -h, --help         show this help message and exit

subcommands:
  valid subcommands

  {add,delete,show}  config subscommand help
    add              add user config
    delete           delete user config
    show             show user config

从支持信息中得以看看,命令行被组织为四个子命令,分别为adddeleteshow

在命令行中实施:
python cmd.py add --help,能够查阅add子命令的鼎力相助音信:

usage: cmd [sub-command] add [-h] --name NAME [--addr ADDR]
                                    [--phone PHONE]

optional arguments:
  -h, --help     show this help message and exit
  --name NAME    user name
  --addr ADDR    user address
  --phone PHONE  phone number

对于add子命令,它有一个参数,分别为用户名、联系地址、电话号码;在那之中用户名称叫必选参数,其余三个为可选参数。

在命令行中实行:
python cmd.py add --name 'Eric' --addr 'California,USA' --phone '0076938377'`

增加三个User的拍卖逻辑将由add_fn()来造成。程序大校获得1个新闻为{name='Eric',addr='California,USA', phone='0076938377'}的User。

def add_fn(args):
    args_dict = vars(args)

    name = args_dict['name']
    address = args_dict['addr']
    phone_number = args_dict['phone']

    print 'Add User : %-10s s s' % (name, address, phone_number)
    ...

其它的deleteshow子命令与此类似,不再赘述。

 

安装colorama库

pip install colorama

image.png

本文由新浦京81707con发布于注册购买,转载请注明出处:使用Python轻松写出漂亮的命令行程序,携程机票

关键词: 新浦京81707con 随笔 Python中文社区

上一篇:数组方法,数组操作方法

下一篇:没有了