python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python 内置模块 argparse

Python 内置模块 argparse快速入门教程

作者:Amo Xiang

argparse模块是Python内置的用于命令项选项与参数解析的模块,argparse模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数,这篇文章主要介绍了快速入门Python内置模块argparse,需要的朋友可以参考下

一、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    : https://blog.csdn.net/xw1680
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')

到此这篇关于快速入门 Python 内置模块 argparse的文章就介绍到这了,更多相关Python 内置模块 argparse内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文