(四)Python查询12306余票:docopt实现参数的输入-----查询任意时间任意车站余票

20 篇文章 0 订阅
6 篇文章 0 订阅

前一篇–>漂亮的输出—–prettytable和colorama的使用
      在前面的文章中我们能实现很漂亮的输出了,可是只是固定时间固定车站之间的车票信息,在本次中我们使用docopt来实现命令行的参数输入,从而查询任意时间任意两个车站的余票。
环境安装:

pip install docopt

使用docopt实现命令行的输入:

"""Train tickets query via command-line.
Usage:
    tickets <from> <to> <date>

Options:
    -h,--help        显示帮助菜单
    from             出发车站
    to               终点站
    date             出发日期

Example:
    filename 南京 北京 2016-07-01
"""
from docopt import docopt

def cli():
    """command-line interface"""
    arguments = docopt(__doc__)

在main函数中调用cli()方法并打印arguments:
这里写图片描述
成功的通过命令行传递查询参数。

接下来我们只需要稍微修改一下resolveData函数就行了。
修改两行:

def resolveData(from_station,to_station,from_date):
    #查询链接
    url = 'https://kyfw.12306.cn/otn/leftTicket/queryO?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(from_date, stations2CODE[from_station],stations2CODE[to_station])    #获取数据

stations2CODE将输入的车站名转换成12306规定的代码。这是一个字典,具体在stationInfo.py中。

在cli()函数中调用修改后的resolveData方法并打印表格:

def cli():
    """command-line interface"""
    arguments = docopt(__doc__)
    tickets = resolveData(arguments['<from>'], arguments['<to>'], arguments['<date>'])
    display(tickets)

测试:
这里写图片描述

下一篇–>票价的查询

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值