【python】程序运行添加命令行参数argparse模块用法详解

这篇具有很好参考价值的文章主要介绍了【python】程序运行添加命令行参数argparse模块用法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse文章来源地址https://www.toymoban.com/news/detail-762857.html

一. argparse介绍

 很多时候,我们的程序要带参数来运行不同的功能,需要解析命令行参数。argparse模块能够很好的提供支持。

argparse是 python 自带的命令行参数解析包,用于解析命令行参数的标准模块。可以让人轻松编写用户友好的命令行接口,还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。

二. 使用步骤及参数介绍

argparse模块的使用可以简化成下面四个步骤:

1)import argparse 导入模块

2)parser = argparse.ArgumentParser() 创建一个解析对象(命令行解析器)
  ArgumentParser对象的相关属性,全部参数:
  【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse

3)parser.add_argument() 向该对象中添加要关注的命令行参数和选项,每一个add_argument方法对应一个要关注的参数或选项;
  add_argument相关属性,全部参数:

属性 解释
name or flags 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
action 当参数在命令行中出现时使用的动作基本类型。
nargs 命令行参数应当消耗的数目。
const 被一些 action 和 nargs 选择所需求的常数。
default 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。
type 命令行参数应当被转换成的类型。
choices 可用的参数的容器。
required 此命令行选项是否可省略 (仅选项可用)。
help 一个此选项作用的简单描述。
metavar 在使用方法消息中使用的参数值示例。
dest 被添加到 parse_args() 所返回对象上的属性名。

4)parser.parse_args() 调用parse_args()方法进行解析
  parse_args相关属性,全部参数:

属性 解释 默认值
args 要解析的字符串列表 从 sys.argv 获取。
namespace 用于获取属性的对象 一个新的空 Namespace 对象。

三. 具体使用

add_argument() 方法必须知道它是否是一个选项,例如 -f 或 --foo,或是一个位置参数。

第一个传递给 add_argument() 的参数必须是一系列旗标或者是一个简单的参数名。

当 parse_args() 被调用,选项会以 - 前缀识别,剩下的参数则会被假定为位置参数。

-(横杠)和 (双横杠)都是用来表示命令行参数的前缀符号:
-用来表示短参数(Short options),通常只有一个字符。
–用来表示长参数(Long options),通常是一个单词或短语。

在argparse中,-和–可以用来定义命令行参数的简写和全名,例如:parser.add_argument(‘-n’, ‘–name’, help=‘输入姓名’)

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-n', '--name', help='输入姓名')
    args = parser.parse_args()
    # 获得传入的参数
    print(args)

带参执行结果:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse

3.1 设置必需参数

add_argument方法的required参数可以设置该参数是否是必需。

如果该参数设置为必需参数,程序执行时未指定该参数会报错!

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', help='输入姓名', required=True)
    parser.parse_args()
    # 获得传入的参数
    print(args)
    # 获得指定的参数
    print(args.name)

运行 python test.py 和 python test.py --name Elaine
结果:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse

3.2 传一个参数

add_argument添加一个参数选项

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', help='输入姓名')
    args = parser.parse_args()
    # 获得传入的参数
    print(args)
    # 获得指定的参数
    print(args.name)

运行程序 -h 看一下效果

D:\>python test.py -h
usage: test.py [-h] [--name NAME]

optional arguments:
  -h, --help   show this help message and exit
  --name NAME  输入姓名

带一个参数和带三个参数运行的结果:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse
可以看到,这种情形下传入三个参数会报错!

3.3 传多个参数

1)add_argument加上nargs参数,nargs是用来说明传入的参数个数,例如:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', nargs=3, help='输入姓名')
    args = parser.parse_args()
    # 获得传入的参数
    print(args)
    # 获得指定的参数
    print(args.name)

运行 python test.py --name Elaine 和 python test.py --name Elaine Elaine1 Elaine2
结果:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse

2)nargs为’+’ 表示传入至少一个参数,可以不用指定具体多少个参数,例如:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', nargs='+', help='输入姓名')
    args = parser.parse_args()
    # 获得传入的参数
    print(args)
    # 获得指定的参数
    print(args.name)

运行 python test.py --name Elaine 和 python test.py --name Elaine Elaine1 Elaine2
结果:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse

3.4 位置参数和可选参数

add_argument() 方法必须知道它是否是一个选项,例如 -f 或 --foo,或是一个位置参数。
第一个传递给 add_argument() 的参数必须是一系列旗标或者是一个简单的参数名。
当 parse_args() 被调用,选项会以 - 前缀识别,剩下的参数则会被假定为位置参数。
1)位置参数
add_argument第一个参数可以这么创建:parser.add_argument(‘name’, help=‘输入姓名’)
其中第一个参数可以是任何参数名,但前面不要加 - (横杠)或 (双横杠)
这些参数是不带前缀的参数,它们通常用于需要按特定顺序提供的参数,且通常是必需的。

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='命令行中传入一个参数')
    parser.add_argument('name', help='输入姓名')
    parser.add_argument('country', help='国家')
    args = parser.parse_args()
    # 获得传入的参数
    print(args)

执行 python test.py Elaine China 和 python test.py China Elaine
结果:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse
所以位置参数都是顺序的,在命令行中传入参数时候,传入的参数的先后顺序不同,运行结果往往会不同!

执行 python test.py Elaine 时缺少第二个位置参数会报错,所以位置参数通常是必须的。例如:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse

2)可选参数
为了在命令行中避免上述位置参数的顺序混乱,可以使用可选参数。这个很像关键词传参,但是需要在关键词前面加-
例如:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', nargs='+', help='输入姓名')
    parser.add_argument('--country', nargs='+', help='国家名称')
    args = parser.parse_args()
    # 获得传入的参数
    print(args)

执行 python test.py --name Elaine Elaine1 Elaine2 和 python test.py --name Elaine Elaine1 Elaine2 --country China
结果:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse
可选参数虽然写法比较繁琐,但是增加了命令行中的可读性,不容易因为参数传入顺序导致数据错乱。

3.5 参数设置默认值

add_argument加上default参数

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-n', '--name', help='输入姓名')
    parser.add_argument('-c', '--country', default='China', help='国家名称')
    args = parser.parse_args()
    # 获得传入的参数
    print(args)

运行python test.py --name Elaine 和 python test.py
结果:
【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse

3.6 其它用法

想要了解更多,可以去看看官方文档
参考官方文档:https://docs.python.org/zh-cn/3.9/library/argparse.html#parents

【python】程序运行添加命令行参数argparse模块用法详解,Python日志,python,argparse模块的使用,argparse

到了这里,关于【python】程序运行添加命令行参数argparse模块用法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 22 Python的argparse模块

    概述         在上一节,我们介绍了Python的datetime模块,包括:datetime模块中一些常用的属性和函数。在这一节,我们将介绍Python的argparse模块。argparse模块是Python的一个标准库,用于编写命令行界面。它可以处理命令行参数和选项,并生成帮助和使用信息。         该

    2024年02月07日
    浏览(36)
  • 以optee的sign_encrypt.py为例讲解argparse命令解析模块

    Argparse是 Python 标准库中推荐的命令行解析模块。该模块会自动生成提示信息,且在用户给程序传入非法参数时报错。 刚好最近在看optee的sign_encrypt.py,以它为例介绍python的argparse命令解析模块。 脚本参见:optee_os/scripts/sign_encrypt.py at master · OP-TEE/optee_os · GitHub ArgumentParser 对象

    2024年02月10日
    浏览(36)
  • python argparse传入布尔参数不生效的解决方法

    在一个需要用到flag作为信号控制代码中一些代码片段是否运行的,比如\\\"--flag True\\\"或者\\\"--flag False\\\"。 但是古怪的是无法传入False,无论传入True还是False,程序里面都是True的参数,所以这个flag并没有生效,也就失去了意义。 参考代码: 执行上面的代码:python3 test.py --flag False

    2024年02月13日
    浏览(27)
  • Python 的 argparse 模块的作用,以及分享一个通用代码模板

    🍉 CSDN 叶庭云 : https://yetingyun.blog.csdn.net/ argparse 是 Python 内置的一个用于命令项选项与参数解析的模块。它的作用是帮助我们处理命令行输入,轻松编写用户友好的命令行接口。 命令行接口的需求 : 假设您编写了一个 Python 脚本,您希望用户能够在运行脚本时提供一些选项

    2024年02月22日
    浏览(39)
  • 【Python_requests学习笔记(五)】requests模块中proxies参数用法

    此篇文章中介绍requests模块中的代理IP参数proxies的详细用法。 1、proxies参数介绍 proxies参数:代替本机的IP地址, 去对接网络的IP地址;其作用是,隐藏真实IP,避免被目标网站封掉。 2、代理IP分类 常见两种分类依据:匿名度、协议 2.1、根据匿名度分类 高匿代理:Web端只能看

    2024年02月13日
    浏览(30)
  • 【Python_requests学习笔记(三)】requests模块中params参数用法

    此篇文章中介绍requests模块中的查询参数params的详细用法和使用环境。 1、params参数介绍 requests模块发送请求时,有两种携带参数的方法:1、params 2、data 其中, params在get请求中使用,data在post请求中使用 params的数据类型为字典类型。 2、params参数作用 对url地址中的查询参数进

    2024年02月08日
    浏览(34)
  • python中argparse模块关于 parse_args() 函数详解(全)

    原理:命令行解析使用argparse包 作用:命令行传参赋值 可用在机器学习深度学习 或者 脚本运行等 了解这个函数需要了解其背后的原理以及具体参数 在深度学习模型框架中几乎都有的模块 浓缩后的示例代码: 主要的对象值赋参,对应的参数具体如下: 主要有两种情况: 位

    2024年02月16日
    浏览(31)
  • Python之使用argparse在命令行读取文件

    关于argparse之parser.add_argument()的用法,这篇文章有较为详细的讲解。因为作业需要,我需要在命令行读入txt文件,网上看了不少博客,都没有直接介绍,而小白在自己尝试的过程中踩了不少坑,尽管做法很简单。这里记在这里。 1.在Python的shell中写一个 ArgparseTry.py 文件,其中

    2023年04月08日
    浏览(69)
  • 【gflags处理命令行参数的库运行程序时如何给定参数】

    gflags (之前称为Google Commandline Flags)是一个用于处理命令行参数的库。在很多C++项目中,特别是由Google开发的项目中,你会经常看到它的身影。这里是一些基本的、高频使用的方法和接口: 定义一个flag 使用 DEFINE_type 宏来定义一个命令行参数,其中 type 可以是int32、int64、

    2024年02月09日
    浏览(25)
  • argparse.ArgumentParser() 用法解析

    本文借阅了各网站大佬的经验,已将原文附 Reference 部分,再此表达最诚挚的谢意,如有侵权,本人立即删除! argparse 是一个 Python 模块:命令行选项、参数和子命令解析器。 argparse 模块可以让人 轻松编写用户友好的命令行接口 。程序定义它需要的参数,然后 argparse 将弄清

    2024年02月10日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包