ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python argparse基本用法总结

2021-03-07 13:01:51  阅读:284  来源: 互联网

标签:argparse args start python parser 用法 -- print dt


1、argparse是什么

这个模块时用来在命令行模式下运行Python脚本,使能够传入参数,直接看个例子:

就是比通过的命令行运行多了杠杠啥,杠啥。

Python test_duye.py --video body.MP4  --image a.png --relative --adapt_scale

2、基本用法

# -*- coding: utf-8 -*-


import argparse
import datetime


def get_parser():
    # 生成argparse对象
    parser = argparse.ArgumentParser(description="帮助信息-->我的公众号名字是:杜唯西")
    
    # 添加需要的参数
    parser.add_argument('--start_dt', type=str, default=datetime.datetime.now().strftime("%Y-%m-%d"))
    parser.add_argument('--end_dt', type=str, required=True, default=datetime.datetime.now().strftime("%Y-%m-%d"))
    parser.add_argument('-n', required=True, choices=['du', 'vc'])

    # 返回parser对象
    return parser  


if __name__ == '__main__':
    parser = get_parser()  # 拿到argparse对象
    print('-----1------')
    print(parser)
    print(type(parser))
    
    args = parser.parse_args()  # 拿到argparse对象的参数
    print('-----2------')
    print(args)
    print(type(args))
    
    start_dt = args.start_dt  # 打印参数
    end_dt = args.end_dt
    n = args.n
    print('-----3------')
    print(start_dt)
    print(end_dt)
    print(n)

执行:python parser_test.py --start_dt '2020-03-04' --end_dt '2020-03-05' -n du

输出:

-----1------
ArgumentParser(prog='parser_test.py', usage=None, description='帮助信息-->我的公众号名字是:杜唯西', formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
<class 'argparse.ArgumentParser'>
-----2------
Namespace(end_dt='2020-03-05', n='du', start_dt='2020-03-04')
<class 'argparse.Namespace'>
-----3------
2020-03-04
2020-03-05
du

大概看下:

函数里分为包括:生成parser对象、给parser对象添加参数、返回parser对象。

生成对象时候的description参数用来显示帮助信息,在输出里可以看到。

add_argument方法用来添加参数信息:

1)'--start_dt':参数名字为start_dt

2)type:程序中需要的类型,比如设置type=inttype=bool。这样就省的类型转化了;

3)required如果为true:运行python时候不带上这个参数的设置就会报错;

4)default:没传入参数时候的默认值;

到此处位置,提到到带不带参数指的是:参数名和参数值一起,即--start_dt '2020-03-04'要一起。

5)choice:参数值只能从几个选项里面选择;

6)help:当使用—help或者-h查看帮助信息的时候,显示出来;看个效果:

先注释掉一些代码:

if __name__ == '__main__':
    parser = get_parser()  # 拿到argparse对象
    # print('-----1------')
    # print(parser)
    # print(type(parser))

    args = parser.parse_args()  # 拿到argparse对象的参数
    print('-----2------')
    print(args)
    print(type(args))

    start_dt = args.start_dt  # 打印参数
    end_dt = args.end_dt
    n = args.nss
    print('-----3------')
    print(start_dt)
    print(end_dt)
    print(n)

执行: python parser_test.py --help

输出:

usage: parser_test.py [-h] [--start_dt START_DT] --end_dt END_DT -nss {du,vc}

帮助信息-->我的公众号名字是:杜唯西

optional arguments:
  -h, --help           show this help message and exit
  --start_dt START_DT  开始时间
  --end_dt END_DT
  -n {du,vc}         选择我的名字

7)dest:写这个是用在代码里的,比如用的长名字,方便读懂代码。

而外部传的参数名字还是这个玩意:'--start_dt':参数名字为start_dt;外部参数可以简单点,比如—s,更容易使用。

8)action:用法就是:

parser.add_argument('--age', action="store_true")

执行:python parser_test.py  --age

注意到没,参数后边没跟具体的值,因为上边action="store_true"表示,只要--age出现,那他就是true;要是不出现就是false。也就是说是布尔值。

注意和default区分。这俩个参数也迷惑了我一会。

 

后记:

PS:不知各位发现没有,end_dt既有require为true,又有default,default之间进冷宫了,不会发挥作用。

PS2:我在实验的时候还发现一个有意思的:

执行:python parser_test.py  --st '4' --end '5' -n du

只要参数的前几个字母能对的上,也是成功输出的。

 

end.

 

标签:argparse,args,start,python,parser,用法,--,print,dt
来源: https://blog.csdn.net/dududududou/article/details/114481763

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有