关于Python的argparse解析命令行参数


最近使用命令行运行python脚本的时候,需要输入参数,而python如何接收运用这些参数的。网上查了一下有比较多的库可以实现,argparse、docopt、click 和 fire等。

这里使用的是argparse库,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数。它的使用也比较简单,自动创建

一、我的测试脚本:

def main():
    # description参数可以用于描述脚本的参数作用,默认为空
    parser = argparse.ArgumentParser(description="监控数据库中新增的物流单号或者未签收的物流单,定时同步物流信息到本地数据库中.")

    parser.add_argument('--crawl_type', '-c', type=int, choices=[1, 2], default=1, help='1:更新物流信息; 2:抓取物流新单')
    parser.add_argument('--logistics_providers', '-l', default=None, help='指定爬取物流商名称,用括号和双引号括起来,比如:("DHL","UPS")')
    parser.add_argument('--sleep_time', '-s', default=100, type=int, help='设置当无爬取任务后,休眠等待的时间(秒).')
    parser.add_argument('--process_num', '-p', choices=[1, 3, 5, 7], default=5, type=int, help='设置多进程爬取,默认是5个进程.')
    args = parser.parse_args()   # 获取命令行参数
    start(
        crawl_type=args.crawl_type,
        logistics_providers=args.logistics_providers,
        sleep_time=args.sleep_time,
        process_num=args.process_num,
    )  # 开始爬取任务

if __name__ == '__main__':
    main()

二、命令行运行脚本

  • 查看帮助说明:可以看到这个脚本的功能说明,以及各个参数的说明
python track_crawl.py --help

三、分析代码

1、ArgumentParser()

创建一个解释器parser,description 是关于这个程序的功能说明。

parser = argparse.ArgumentParser(description="监控数据库中新增的物流单号或者未签收的物流单,定时同步物流信息到本地数据库中.")

2、add_argument()

add_argument方法常用的有以下参数:

  • 参数名称: 第一个是参数名称,比如我这里参数名称是crawl_type,前面加“--”;
  • 参数别名: 参数简写,比如这里c代表这个参数的简写,前面加“-”;
  • type: 指定输入的参数类型,输入的参数将被指定方法调用,可以这些方法包含int、str、tuple、list等;
  • choices:指定用户输入的参数选择,用户不能输入指定参数以为的值;
  • default:如果用户不指定参数,则默认参数为该值;
  • help:该参数的说明。
    parser.add_argument('--crawl_type', '-c', type=int, choices=[1, 2], default=1, help='1:更新物流信息; 2:抓取物流新单')

3、parser.parse_args()

获取命令行参数

args = parser.parse_args()   # 获取命令行所有的参数
crawl_type=args.crawl_type   # 获取crawl_type参数

题外话

好了,上面已经说明了关于Python的argparse库是如何解析命令行参数的,我们正常使用python脚本的时候,都是需要先打开命令行工具,切换到路径,然后输入命令指定运行脚本,为了避免重复操作,我们可以使用写个BAT批处理。

  • 创建bat文件

创建一个文本文件,命名为“定时更新物流信息任务.bat”,内容如下

:: 注释说明:执行定时更新物流信息任务的脚本,休眠时间设置为4个钟
python track_crawl.py -c 1 -s 14400
  • 运行bat文件

直接双击刚刚创建的bat批处理文件即可。可以看到直接弹出命令行工具,并且自动运行刚刚我们创建的代码。

  • 后台运行bat脚本

如果需要,可以看这篇文章:后台运行bat脚本


 评论