目录
- 一、argparse 简介
- 二、The add_argument() method
一、argparse 简介
argparse
模块是 Python 内置的用于命令项选项与参数解析的模块,argparse
使用 argparse 模块的四个步骤:
① 导入 argparse 包
import argparse
② 创建一个命令行解析器对象
# 创建 ArgumentParser() 对象
parser_ = argparse.ArgumentParser(description="study argparse")
③ 给解析器添加命令行参数 ——调用 add_argument() 方法添加参数
parser_.add_argument('food')
④ 解析命令行的参数 ——使用 parse_args() 解析添加的参数,并将结果用 print 语句输出
args = parser_.parse_args()
print(args.food)
print(type(args.food))
代码示例:
# -*- coding: utf-8 -*-
# @Time : 2023-04-19 15:48
# @Author : AmoXiang
# @File : test.py
# @Software: PyCharm
# @Blog :
import argparse # 1.导入argparse
# 2.创建一个命令行解析器对象
parser_ = argparse.ArgumentParser(description="study argparse")
# 3.给解析器添加命令行参数
parser_.add_argument('food')
# 4.解析命令行的参数并打印
args = parser_.parse_args()
print(args.food)
print(type(args.food))
运行结果如下:
对上面代码进行解读:
首先我们导入
argparse
这个包,然后包中的 ArgumentParser 类生成一个 parser 对象(其中的 description 对参数解析器的作用进行描述),当我们在命令行显示帮助信息的时候会看到 description 描述的信息。例如:python test.py -h
接着我们通过对象的 add_argument 函数来增加参数。这里我们增加了 food 参数,最后采用对象的 parse_args 获取解析的参数。打印结果如下图所示:
二、The add_argument() method
add_argument() 方法定义如何解析单个命令行参数, 语法如下:
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help]
[, metavar][, dest])
后续示例代码会用到的参数解释:
① name or flags - Either a name or a list of option strings, e.g. foo or -f, --foo. 必要参数
② choices - A container of the allowable values for the argument.
③ type - The type to which the command-line argument should be converted.
④ default - The value produced if the argument is absent from the command line.
⑤ help - A brief description of what the argument does.
name or flags 第一种写法如下:
import argparse
parser_ = argparse.ArgumentParser(description="study argparse")
# 该种方式则要求必须输入该参数
parser_.add_argument('food')
args = parser_.parse_args()
print(args.food)
print(type(args.food))
命令行运行方式:
E:\download\AccountPool-master>python3 test.py 2
2
<class 'str'> 这种方式会将 2 赋值给food
E:\download\AccountPool-master>python3 test.py noodles
noodles
<class 'str'> 这种方式会将 noodles 赋值给food
name or flags 第二种写法如下:
# 1.--house 代表参数名称
# 2.type 代表输入的参数类型,从命令行输入的参数,默认是字符串类型
# 3.default 代表如果该参数不输入,则会默认使用该值
import argparse
parser_ = argparse.ArgumentParser(description="study argparse")
parser_.add_argument('--house', type=int, default=0)
args = parser_.parse_args()
print(args.house)
print(type(args.house))
命令行运行方式:
E:\download\AccountPool-master>python3 test.py --house 1
1
<class 'int'>
E:\download\AccountPool-master>python3 test.py
0
<class 'int'>
name or flags 第三种写法如下:
# -gf 代表短选项,在命令行输入-gf和--girlfriend的效果是一样的,作用是简化参数输入
# --girlfriend 代表完整的参数名称,可以尽量做到让人见名知意,需要注意的是如果想通过解析后的参数取出该值,必须使用带--的名称
# choices 代表输入参数的只能是这个choices里面的内容,其他内容则会保错
import argparse
parser_ = argparse.ArgumentParser(description="study argparse")
parser_.add_argument('-gf', '--girlfriend', choices=['jingjing', 'lihuan'])
parser_.add_argument('food')
args = parser_.parse_args()
print(args.food)
print(type(args.food))
print(args.girlfriend)
print(type(args.girlfriend))
命令行运行方式:
E:\download\AccountPool-master>python3 test.py --girlfriend jingjing
usage: test.py [-h] [-gf {jingjing,lihuan}] food
test.py: error: the following arguments are required: food
E:\download\AccountPool-master>python3 test.py --girlfriend jingjing amoxiang
amoxiang
<class 'str'>
jingjing
<class 'str'>
E:\download\AccountPool-master>python3 test.py -gf jingjing amoxiang
amoxiang
<class 'str'>
jingjing
<class 'str'>
E:\download\AccountPool-master>python3 test.py -gf amoxiang1 amoxiang2
usage: test.py [-h] [-gf {jingjing,lihuan}] food
test.py: error: argument -gf/--girlfriend: invalid choice: 'amoxiang1' (choose from 'jingjing', 'lihuan')