Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python:argparse用于命令行参数解析

python:argparse用于命令行参数解析

作者头像
生信菜鸟团
发布于 2021-12-15 09:54:36
发布于 2021-12-15 09:54:36
2.7K00
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

argparse是python中内置的命令行解析模块,内置于python,导入即可使用。

默认自带帮助

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argparse

parser = argparse.ArgumentParser()
print(parser.parse_args())

保存为parser-tools.py,命令行运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>python parser-tools.py -h
usage: parser-tools.py [-h]

optional arguments:
  -h, --help  show this help message and exit

argparse.ArgumentParser是创建一个参数解析实例,参数description指定帮助中程序的描述信息,prog指定帮助信息中的程序名称,epilog可以指定帮助信息最下面的帮助信息。

add_argument添加参数

参数可以分为位置参数和选项参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-a", "--arg1", "--arg2")
parser.add_argument("-b", type = int, default = 10)
parser.add_argument("c")

print(parser.parse_args())

上例中a和b是选项参数,c是位置参数。区别在于是否以"-"开头,另外可以对一个参数指定多个标识符,所以a参数可以用arg1或者arg2来指定。此时的帮助信息如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>python parser-tools.py -h
usage: parser-tools.py [-h] [-a ARG1] [-b B] c

positional arguments:
  c

optional arguments:
  -h, --help            show this help message and exit
  -a ARG1, --arg1 ARG1, --arg2 ARG1
  -b B

type指定参数的类型,可以知道选项参数b是整数类型(默认是字符型)。另外还可以使用default值,当不指定一个参数的时候,参数就会使用此默认值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>python parser-tools.py --arg2 a-string -b 1 c-string
Namespace(arg1='a-string', b=1, c='c-string')

可以发现,a参数解析为"a-string",b参数解析为用1,c是位置参数,此时指定为"c-string"。

a和b不指定的时候就是使用默认值,如果没有指定default,就会使用default的默认值None:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>python parser-tools.py  1
Namespace(arg1=None, b=10, c='1')

当不指定a和b时,a因为没有指定默认值为None,b使用默认值10。

nargs可以指定一个参数接受多少个数据:

N:一个整数,代表指定的个数;

*:接受任意个参数,包括零个,结果是一个列表;

?:零个或一个;

+:至少一个,否则报错;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argparse

parser = argparse.ArgumentParser()

parser.add_argument("-d", nargs="?", const="d const value", default="d default value")
parser.add_argument("-e", action="store_const", const="e const value", default="e default value")
parser.add_argument("-f", nargs="*")

print(parser.parse_args())

由于?代表接受0个或1个参数,当指定了参数但是没有传参数值时,如果此时设置了const值,那么此时就会使用const的值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>python parser-tools.py -d -f
Namespace(d='d const value', e='e default value', f=[])

可以发现在指定d参数但是不传入具体的参数值时,那么就会使用const的值,e参数由于没有指定,因此使用默认值,f参数时定义的任意个值,由于也没有传值给它,所以是一个空列表。

const在nargs是"?"或者action是”store_const“等值的时候是有用的,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>python parser-tools.py -d -e -f 1 3 str
Namespace(d='d const value', e='e const value', f=['1', '3', 'str'])

可以发现e参数的action就是store_const,结果在指定e参数后,其值就是使用的const值。

action是在接收到命令行参数后如何处理参数值,默认情况下是存储值,比如上例中的f,传入了三个参数1 3 str,解析结果就是储存了一个包含三者的一个列表。

action可以指定如下:

store_const: 当指定了参数后,会将参数的值解析为const的值;

store_true和store_false:和store_const类似,只不过此时const的值自动就是True或者False;

append: 存储为一个列表,当需要多次使用一个参数时,可以使用;

append_const: 存储为一个列表,并将const的值追加到列表中;

count: 统计一个参数的出现次数;

help: 默认情况下,一个打印帮助的h参数已经自动添加;

version: 打印版本号,需要同时指定version的值;

extend:存储为一个列表,并将每个参数加到列表中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argparse

parser = argparse.ArgumentParser()

__VERSION__ = "0.0.1"

parser.add_argument("-v", "--version", action="version", version=__VERSION__)
parser.add_argument("-g", action="append_const", const="const-val")
parser.add_argument("-i", action="count")

print(parser.parse_args())

打印版本号,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>python parser-tools.py -v
0.0.1

如果多次使用一个参数,解析结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>python parser-tools.py -gg -iii
Namespace(g=['const-val', 'const-val'], i=3)

另外,choices参数指定参数的可选值,required代表必选参数, dest代表参数解析后的变量名。

add_subparsers可以添加子命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argparse

parser = argparse.ArgumentParser(
    description="Test sub commond", 
    prog="Parse-Tools",
    epilog="More help message here..."
)

sub_parser = parser.add_subparsers()

sub_a = sub_parser.add_parser("A")
sub_b = sub_parser.add_parser("B")

sub_a.add_argument("-aa", "--A_Arg")
sub_b.add_argument("-bb", "--B_Arg")

print(parser.parse_args())

add_subparsers返回的parser对象,对其添加子命令A和B,每个子命令可以继续添加argument,结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 帮助信息
>python parser-tools.py -h
usage: Parse-Tools [-h] {A,B} ...

Test sub commond

positional arguments:
  {A,B}

optional arguments:
  -h, --help  show this help message and exit

More help message here...

# 子命令A帮助信息
>python parser-tools.py A -h
usage: Parse-Tools A [-h] [-aa A_ARG]

optional arguments:
  -h, --help            show this help message and exit
  -aa A_ARG, --A_Arg A_ARG

# 子命令A
>python parser-tools.py A -aa test
Namespace(A_Arg='test')
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 命令行之旅:深入 argparse(二)
在上一篇“深入 argparse (一)”的文章中,我们深入了解了 argparse 的包括参数动作和参数类别在内的基本功能,具备了编写一个简单命令行程序的能力。本文将继续深入了解 argparse 的进阶玩法,一窥探其全貌,助力我们拥有实现复杂命令行程序的能力。
Python猫
2019/10/15
1.5K0
【转】Python 模块简介 -- argparse
argparse 是 Python 标准库中用来解析命令行参数和选项的模块,其是为替代已经过时的 optparse 模块而生的,该模块在 Python2.7 中被引入。argparse模块的作用是用于解析命令行参数。
marsggbo
2020/03/17
2.7K1
python学习之argparse模块
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。
py3study
2020/01/09
2K0
Python 命令行之旅:初探 argparse
花下猫语:国庆期间,公众号停更了几天,那是因为我去江西参加婚礼了,如今正在写“观感”呢(写完后会发在文艺号“豌豆花”上)。所以,原创文章要再拖一下了。
Python猫
2019/10/14
7290
Python 命令行之旅:初探 argparse
python 模块argparse用法实
 argparse是python内置模块,用于快速创建命令行。有一个第三方模块Click也可以实现这个功能,两者各有优缺点,看个人需求吧。
py3study
2020/01/10
4950
python argparse处理命令行参数
对于脚本编程而言,经常需要从命令行传递参数到脚本中。对于命令行参数的定义和使用,有一套完整的规则,以linux上的ls命令为例
生信修炼手册
2020/05/25
1.7K0
Python3脚本编程常用.md
Python 提供了 getopt 模块来获取命令行参数(指定参数名称) getopt 模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv,命令行选项使得程序的参数更加灵活,支持短选项模式(-)和长选项模式(–)。
全栈工程师修炼指南
2022/09/28
8610
Python3脚本编程常用.md
python: argparse库 & 命令行解析工具
API ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest]) name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, –foo。 action - 命令行遇到参数时的动作,默认值是 store。 store_const,表示赋值为con
JNingWei
2018/09/27
7460
Python 命令行参数解析库argparse
在工作业务中,有些函数的调用要尽量傻瓜,能够让其他人能够方便地调用,毕竟甲方是爸爸。
MeteoAI
2019/07/24
1.9K0
python包合集-argparse
  argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 import argparse
Se7eN_HOU
2022/09/28
4290
python包合集-argparse
Python笔记:外部参数传入考察(一)argparse库
在编程中,我们往往会遇到需要通过外部参数来控制脚本运行模式的情况,在通用的框架类代码中,这种情况尤为明显,因此,这里,我们来考察一下如何将参数传入到脚本文件中,而不是作为固定参数写死在脚本当中。
codename_cys
2021/03/25
4.5K0
【测试开发】python系列教程:argparse 模块
在命令行程序中,经常需要获取命令行参数。Python内置的sys.argv保存了完整的参数列表,我们可以从中解析出需要的参数:
雷子
2023/08/25
2600
【测试开发】python系列教程:argparse 模块
python argparse使用
 在不同环境部署项目时,由于不同的配置,部署时难免会改变部署的方式,而且基本使用版本管理工具,比如git或svn进行下拉代码部署项目时,尽可能的不变动代码(如果变动代码,下次下拉代码前必须要使用git reset --hard命令恢复代码,较为麻烦)而达到成功部署的目的。
用户1558882
2019/03/19
9920
Python3 命令行参数解析
在模型训练程序中,我们经常要配置命令参数,这里可用到 argparse 模块,它是 Python 内置的一个用于命令选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。 使用 argparse 模块解析命令行参数,主要分三个步骤:创建解析器、添加参数、解析参数,步骤如下:
嵌入式视觉
2022/09/05
1.4K0
Python 利用argparse模块实现脚本命令行参数解析
如上,以上代码实现是针对单个模块脚本,如果要在多个模块中使用咋办?解决方法为封装为类,具体参见“代码实践2”
授客
2020/12/29
1.1K0
python-argparse模块
我们通过控制台 输入 python3 argsparser_demo.py --help,我们可以看到相关说明
搁浅同学
2022/07/21
3430
python-argparse模块
Python 命令行之旅:深入argparse (一)
在第一篇“初探 argparse”的文章中,我们初步掌握了使用 argparse 的四部曲,对它有了一个基本的体感。但是它具体支持哪些类型的参数?这些参数该如何配置?本文将带你深入了解 argparse 的参数。
Python猫
2019/10/14
7560
Python 命令行之旅:深入argparse (一)
Python解析命令行参数 - argparse
parser.add_argument("--port", help="database port", type=int, default=3306)
十毛
2021/01/27
1.3K0
python命令行库如何实现子命令共享参数?
本文参考这篇文章,比较了argparse、click的区别。尽管只用某一个也不是不可以,但我觉得我还是挺有必要进行一下对应的对比。
千灵域
2022/06/17
1K0
Python解析命令行读取参数 — argparse模块
在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。万能的python就自带了argprase包使得这一工作变得简单而规范。PS:optparse包是类似的功能,只不过写起来更麻烦一些。
全栈程序员站长
2022/07/19
8650
相关推荐
Python 命令行之旅:深入 argparse(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档