argparse命令行解析包

 

1. argparse

是python的一个命令行解析包,非常编写可读性非常好的程序,一般有3个步骤

  • 创建 ArgumentParser() 对象
  • 调用 add_argument() 方法添加参数
  • 使用 parse_args() 解析添加的参数

2.positional arguments

定位参数传值的方法--直接用 “参数名” 或者 ‘参数名’ (双引号或单引号均可)

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('integer', type=int, help='display an integer')
args = parser.parse_args()

print args.integer

如图例子需要输入一个整数赋值给integer,

1⃣️没有按照规定类型赋值;

2⃣️赋给未定义变量;

3⃣️用定位参数法时,如果有多个参数,只赋值部分报错;----必须对全部参数进行赋值,哪怕没有调用;

以上情况任何一种,都会报错

3. optional arguments

可选参数传值---两种表达方式

  1. 一种是通过一个-来指定的短参数,如-h
  2. 一种是通过--来指定的长参数,如--help;

这两种方式可以同存,也可以只存在一个

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--integer", type=int, help='display an integer')
parser.add_argument('-float', type=float, help='display an integer')
args = parser.parse_args()

print (args.integer)
print(args.float)

测试

>> python3 02.py 3 2.5
usage: 02.py [-h] [--integer INTEGER] [-float FLOAT]
02.py: error: unrecognized arguments: 3 2.5
>>python3 02.py --integer 3 2.5
usage: 02.py [-h] [--integer INTEGER] [-float FLOAT]
02.py: error: unrecognized arguments: 2.5
>> python3 02.py --integer 3 -float 2.5
3
2.5

说明:

1⃣️--声明和--赋值要一一对应

2⃣️--和-只是形式,并没有对参数名的长度有非常严格的要求

3⃣️用可选参数法声明多个参数时,可以只对部分进行赋值,并不会报错;前提是没有调用未赋值的参数

 

4.可选参数

 

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--integer","-int", type=int, help='display an integer')
parser.add_argument('-float',"-f", type=float, help='display an integer')
args = parser.parse_args()

print (args.integer)
print(args.float)

同一个变量给了两个名字,调用时使用较长名字的那一个,否则会报错;但是在参数赋值时,传给哪一个都可以。

>>> python3 02.py --int 3 -f 2.5
Traceback (most recent call last):
  File "02.py", line 8, in 
    print (args.int)
AttributeError: 'Namespace' object has no attribute 'int'

 

 

参考:https://www.jianshu.com/p/fef2d215b91d

 

你可能感兴趣的:(linux)