实用小公举

Python命令行参数解析之argparse学习

2019-11-30  本文已影响0人  陈忠俊

最近在脚本中需要用的命令行参数的解析,所以就学了一下。

import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="CLI args collection test...")
    parser.add_argument('-t', '--time', metavar="define timestamp", nargs=2)
    args = parser.parse_args()
    print(args.time)

测试:

Administrator@Eclipse MINGW64 ~/Desktop/cookbook
$ py -3 argparse_test.py -t 2019 2020 
['2019', '2020']
Administrator@Eclipse MINGW64 ~/Desktop/cookbook
$ py -3 argparse_test.py -t 2019 2020 2021
usage: argparse_test.py [-h] [-t define timestamp define timestamp]
argparse_test.py: error: unrecognized arguments: 2021

这里指定了一个参数的两个形式,长参数--time,短参数-t,这里的

metavar 用来生成帮助信息
nargs 定义参数的个数,这里是2个,给一个或者超过2个都会报错,输出的参数集是列表的形式

add_argument的参数有以下:

nargs: 指这个参数后接几个参数,如上例子

default: 参数的默认值

将上述代码的time参数修改如下:

parser.add_argument('-t', dest='time', default='2019-11-30')

输出:

$ py -3 argparse_test.py 
2019-11-30
---
$ py -3 argparse_test.py -t '2019-12-01'
2019-12-01

help: 设置帮助信息,这个没什么好说的,在-h下输出帮助信息

dest: 这个是参数变量对应的名字,如上-t 2019-12-01time的值就是-t后的值。如上的args.time

required: 字面意思都知道,是否是必须的。对应布尔值True or False。默认是False,可以不给。

代码修改如下,

parser.add_argument('-t', dest='time', required=False)

调试:

$ py -3 argparse_test.py 
None 

修改为True

parser.add_argument('-t', dest='time', required=True)
$ py -3 argparse_test.py 
usage: argparse_test.py [-h] -t TIME
argparse_test.py: error: the following arguments are required: -t

choices: 设置默认的参数值范围

在上述代码中加入:

parser.add_argument('-e', dest='env', choices=['production', 'stage', 'pre-release'], required=True)

测试:

$ py -3 argparse_test.py -e test
usage: argparse_test.py [-h] -e {production,stage,pre-release}
argparse_test.py: error: argument -e: invalid choice: 'test' (choose from 'production', 'stage', 'pre-release')
---
$ py -3 argparse_test.py -e stage
stage

type: 定义参数的类型, int, str, float 等常用数据类型

$ py -3 argparse_test.py -a eclipse
usage: argparse_test.py [-h] [-a AGE]
argparse_test.py: error: argument -a/--age: invalid int value: 'eclipse'
---
$ py -3 argparse_test.py --age=23
23

action: 对应的值较多,常用的是store,这个也是默认的,保存该参数值。
action="append":指当同一参数有多个值时,将其保存到一个列表中
如上例子,-a 23 --age=32那么age的输出是列表:

parser.add_argument('-a', '--age', dest='age', action='append', type=int)
args = parser.parse_args()
print(args.age)
$ py -3 argparse_test.py -a 23 --age=32
[23, 32]
上一篇 下一篇

猜你喜欢

热点阅读