【python】argparse模块——命令行解析

【python】argparse模块——命令行解析

argparse模块安装

pip install argparse
# argparse是python的自带标准库,一般不需要额外安装。用pip安装会提示已经存在。

argparse模块导入

import argparse
# 导入argparse模块

argparse模块基本语法

parser = argparse.ArgumentParser(description = " "# 设置一个解析器类parser
parser.add_argument(name or flags[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
# 定义一个命令行参数。[]中是add_argument的可选参数
# name or flags接受选项参数或者是位置参数。“--my_parameter"是选项参数的格式,--后面的是该命令行参数的名字,自己定义。位置参数的命令行参数的名字没有固定格式。
args = parser.parse_args()
# 解析命令行参数
# args是一个命名空间:Namespace
----------------------------------------------------------------------------------------------------------------------------
# Namespace(A=None, B=1)
# 假设args这个命名空间内容如上
# python中输入args.A,什么都不会打印
# python中输入args.B,打印1 
# action相关
# action参数有七种可选,代表可以在解析到一个命令行参数时进行触发的七种不同操作

# 1.store(默认) —— 保存命令行参数值
praser.add_argument("--my_store")
----------------------------------------------------------------------------------------------------------------------------
# test.py文件内容
import argparse


parser = argparse.ArgumentParser(description = "My argparse test")
parser.add_argument("--my_store")
args = parser.parse_args()
print(args)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并设命令行参数--my_store为1
python test.py --my_store 1
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
Namespace(my_store='1')

# 2.store_const 
praser.add_argument("--my_store_const", action = "store_const")
# 3.store_ture 
# 4.store_false 
# 5.append 
# 6.append_const 
# 7.version 
# nargs相关
# nargs指定一个命令行参数选项后需要参数的个数,默认是1
parser.add_argument("--my_nargs") # 一个参数。如果没有参数,且name or flags是位置参数时会报错。
parser.add_argument("--my_nargs", nargs = "?") # 多与const参数一起使用
parser.add_argument("--my_nargs", nargs = "*") # 多个参数。如果没有参数,且name or flags是位置参数时返回Namespace的是空列表。除了选项参数且没有参数时返回空外,不管几个参数,返回给Namespace的一定是一个列表。
parser.add_argument("--my_nargs", nargs = "+") # 至少一个参数。如果没有参数,且name or flags是位置参数时会报错。多个参数时返回给Namespace一个列表。
parser.add_argument("--my_nargs", nargs = number) # 指明参数的数量number,不符合则报错。多个参数时返回给Namespace一个列表。
# const相关
# 常与nargs = "?"一起使用。当参数为空时,获取default的值。当有参数选项,但是不注明参数值时,获取const的值
----------------------------------------------------------------------------------------------------------------------------
# test.py文件内容
import argparse


parser = argparse.ArgumentParser(description = "My argparse test")
parser.add_argument("--my_const", nargs = "?", const = 1, default = 0)
args = parser.parse_args()
print(args)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件
python test.py  
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
Namespace(my_const=0)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并设命令行参数--my_store为2
python test.py --my_store 2
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
Namespace(my_const=2)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并设命令行参数--my_store为2 4(两个参数)
python test.py --my_store 2 4
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容(报错)
test.py: error: unrecognized arguments: 4
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并添加命令行参数--my_store,但后面没有具体参数
python test.py --my_store
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
Namespace(my_const=1)
# default相关
# default是命令行参数的默认值,如果没有default参数,则默认是None,即空。
# type相关
# type是命令行参数的数据类型,主要有int,bool,str等。
# choices相关
# choices用来指明参数的范围,范围外则报错
parser.add_argument("--my_choices", choices = [1, 2, 3])
parser.add_argument("--my_choices", choices = ["a", "bc", "d"])
# required相关
# required设置在命令中显示参数,当required为True时,在输入命令时需要显示该参数
# help相关
# 这个命令行参数的描述参数,相当于自己写的帮助文档。
# metavar相关
# metavar设置help输出信息
# dest相关
# dest指定参数的位置
parser.print_help()
# 输出description和help的信息
----------------------------------------------------------------------------------------------------------------------------
# test.py文件内容
import argparse


parser = argparse.ArgumentParser(description = "My argparse test")
parser.add_argument("--A", choices = ["a", "bc", "d"])
args = parser.parse_args()

parser.print_help()

print(args)
----------------------------------------------------------------------------------------------------------------------------
# 执行test.py文件,并设命令行参数A为“a”
python test.py --A "a"
----------------------------------------------------------------------------------------------------------------------------
# 打印输出内容
usage: test.py [-h] [--A {a,bc,d}]

My argparse test

optional arguments:
  -h, --help    show this help message and exit
  --A {a,bc,d}
Namespace(A='a')

结语

如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值