python中argparse模块超详细使用详解(一)

python中argparse模块超详细使用详解(一)

argparse —命令行选项、参数和子命令解析器

argparse使用步骤:

  1. 导入argparse模块: import argparse
  2. 实例化一个对象: parser=argparse.ArgumentParser()
  3. 加入参数或选项: parser.add_argument()
  4. 获取参数: args=parser.parse_args()

add_argument()参数详解:

python中argparse模块超详细使用详解

argparse —命令行选项、参数和子命令解析器

argparse使用步骤:

  1. 导入argparse模块: import argparse
  2. 创建一个解析器: parser=argparse.ArgumentParser()
  3. 添加参数: parser.add_argument()
  4. 解析参数: args=parser.parse_args()

add_argument()参数详解

ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][,required][,help][,metavar][,dest])
先讲下下面粗体字的部分参数;
name or flags-一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
• action-当参数在命令行中出现时使用的动作基本类型。
• nargs-命令行参数应当消耗的数目。
• const -被一些action 和nargs 选择所需求的常数
default -当参数未在命令行中出现时使用的值
type-命令行参数应当被转换成的类型。
choices-可用的参数的容器。
required -此命令行选项是否可省略(仅选项可用)。
help-一个此选项作用的简单描述。
• metavar -在使用方法消息中使用的参数值示例。
• dest -被添加到parse_args() 所返回对象上的属性名

  1. 位置参数和可选参数区别:
#demo.py
import argparse
parse=argparse.ArgumentParser(description='Create location parameter')
#"string"是参数名字,type是命令行参数应当被转换成的类型,
#help是此对选项参数作用的简单描述
parse.add_argument('string',type=str,help='Location parameter')
parse.add_argument('-i','--int',type=int,help='Optional parameters')
args=parse.parse_args()
#获取参数
print(args)

命令行输入python demo.py -hpython demo.py -help输出:
python中argparse模块超详细使用详解(一)_第1张图片
(1)位置参数: 根据参数传入的位置来解析参数,传入的参数的顺序不同,运行结果也不同

import argparse
parse=argparse.ArgumentParser(description='Create location parameter')
#加入两个位置参数名字分别为'LA'和'LB'
parse.add_argument('LA',type=str,help='Location A')
parse.add_argument('LB',type=str,help='Location B')
args=parse.parse_args()
print(args)
print('Location A:'+args.LA+'    Location B:'+args.LB)

运行python demo.py love youpython demo.py you love结果:

demo.py
demo.py
位置参数只会根据参数的顺序来确定参数

说明: args把参数以字典的数据类型存储,所以直接打印args可以得到第一行结果,可以通过访问字典的key来访问value得到第二行结果
(2)可选参数: 以名字来指定参数,和所在的位置无关,可以用’-短参数名字’,或者’–长参数名’来指定,二者可任选其一或全选但都代表一个参数

import argparse
parse=argparse.ArgumentParser(description='Create location parameter')
#加入两个可选参数名字分别为'i1'或'int1'和'i2'或'int2'
parse.add_argument('-i1','--int1',type=int,help='Optional parameters 1')
parse.add_argument('-i2','--int2',type=int,help='Optional parameters 2')
args=parse.parse_args()
print(args.int1)
print(args.int2)

运行python demo.py 5 20结果:
demo.py
出错: 无法识别的参数,因为可选参数不是根据位置来确定的,而是要通过名字来指定。
运行python demo.py --int1 5 --int2 20python demo.py --int2 5 --int1 20结果:
demo.py
demo.py

2.required参数:设置该选项可以设置该参数是否在运行程序时必须指出

parse=argparse.ArgumentParser(description='Create location parameter')
#不设置required默认为required='false'
parse.add_argument('--LA',type=str,help='Location A')
#required设置为True
parse.add_argument('--LB',type=str,required=True,help='Location B')
args=parse.parse_args()
print(args.LA)
print(args.LB)

运行python demo.py 结果
demo.py出错: 需要以下参数 --LB

运行python demo.py --LB CHINA结果:
demo.py
3.default :当参数未在命令行中出现时使用的值

import argparse
parse=argparse.ArgumentParser(description='Create location parameter')
#指定默认值
parse.add_argument('--LA',type=str,default='wakaka',help='Location A')
parse.add_argument('--LB',type=str,required=True,help='Location B')
args=parse.parse_args()
print(args.LA)
print(args.LB)

运行python demo.py --LB CHINA结果:
demo.py
4.choices:可用的参数的容器,参数必须从给定的列表中选取

import argparse

parse=argparse.ArgumentParser(description='Create location parameter')
parse.add_argument('--LA',type=str,default='wakaka',help='Location A')
#--LB的参数必须为'see','you','tomorrow'中一个
parse.add_argument('--LB',type=str,required=True,choices=['see','you','tomorrow'],help='Location B')
args=parse.parse_args()
print(args.LA)
print(args.LB)

运行python demo.py --LB CHINA结果:出错!
demo.py
运行python demo.py --LB see结果:
demo.py

你可能感兴趣的:(python)