python中argparse模块及action='store_true'详解

目录
  • Python argparse模块详解
  • 1. 问题描述
  • 2. add_argument() 方法官方介绍
    • action
  • 3. 实例测试与对比
    • step01
    • step 02
    • step03:store后面是否可以自定义?
    • step04:为什么我的输出值为None?
    • step05 理解store_true,store_false

Python argparse模块详解

argparse 是一个用来解析命令行参数的 Python 库,它是 Python 标准库的一部分。基于 python 2.7 的 stdlib 代码。argparse 模块使编写用户友好的命令行界面变得容易。程序定义了所需的参数,而 argparse 将找出如何从 sys.argv 中解析这些参数。argparse 模块还会自动生成帮助和使用消息,并在用户为程序提供无效参数时发出错误。

1. 问题描述

经常炼丹的朋友对下面这段代码非常熟悉。

parser = argparse.ArgumentParser()
parser.add_argument('-c','--clean',action='store_true')
parser.add_argument('-r','--run',action='store_true')
config = parser.parse_args()

然后问题来了,action他的意义在这里是什么?

我去查了查资料,简单的做个总结

2. add_argument() 方法官方介绍

在这个方法中,

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

其中

action - 当参数在命令行中出现时使用的动作基本类型。

详细来讲,就是

action

ArgumentParser对象将命令行参数与动作相关联。这些动作可以做与它们相关联的命令行参数的任何事,尽管大多数动作只是简单的向

parse_args()返回的对象上添加属性。action 命名参数指定了这个命令行参数应当如何处理。供应的动作有:

'store' - 存储参数的值。这是默认的动作。

3. 实例测试与对比

step01

用实例来讲:

def testArgparse():
	parser = argparse.ArgumentParser(description = 'Argparse Demo.')
	parser.add_argument('-n', '--name', default = 'Lee')
	parser.add_argument('-m', '--money', default = '80W')
	args = parser.parse_args()
	print(' This content is ', args)
	name = args.name
	money = args.money
	print(' Shuai ge is {}, ta yi nian {}!'.format(name, money))
if __name__ == '__main__':
	testArgparse()

输出的结果为:

step 02

接下来我们引入 store。

def testArgparse():
	parser = argparse.ArgumentParser(description = 'Argparse Demo.')
	parser.add_argument('-n', '--name', default = 'Lee')
	parser.add_argument('-m', '--money', action='store_const', const = '80W')
	args = parser.parse_args()
	print(' This content is ', args)
	name = args.name
	money = args.money
	print(' Shuai ge is {}, ta yi nian {}!'.format(name, money))
if __name__ == '__main__':
	testArgparse()

注意,我在这里增加了

action='store_const', const = '80W'

替换了原来的

default = '80w'

程序可以运行,但是我们可以看到,值出现了变化

money这里变成了none。

一步一步来。

step03:store后面是否可以自定义?

代码变红了,我还以为可以。实际上不行。

step04:为什么我的输出值为None?

修改了赋值语句之后,可以取到值。

但是对比可以得到, 取值时候需要加入索引。

parser.parse_args(['-m'])

step05 理解store_true,store_false

这个时候我们再回头来看,就很清晰了,就是给参数赋值为true和false。

准确描述为:“当带有store_true时,你传入对应参数,则触发为真,否则为假。”

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='store_true')
>>> parser.add_argument('--bar', action='store_false')
>>> parser.add_argument('--baz', action='store_false')
>>> parser.parse_args('--foo --bar'.split())
Namespace(foo=True, bar=False, baz=True)

那在我们具体应用中呢?

看实例

def testArgparse():
	parser = argparse.ArgumentParser(description = 'Argparse Demo.')
	parser.add_argument('-t', '--tag', action='store_true', help='是否能够运行')
	parser.add_argument('-n', '--name', default = 'Lee')
	parser.add_argument('-m', '--money', action='store_const', const = '80W')
	args = parser.parse_args()
	print(' This content is ', args)
	name = args.name
	#money = args.money
	money = parser.parse_args(['-m'])
	tag= args.tag
	print(tag,int(tag))
	print(' Shuai ge is {}, ta yi nian {}!'.format(name, money))
if __name__ == '__main__':
	testArgparse()

当我们调用为true的时候,

这些就非常明确了。

到此这篇关于python中argparse模块,action=‘store_true‘的文章就介绍到这了,更多相关python中argparse模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python argparse库的基本使用步骤

    目录 基本用法 1.int支持 2.str支持 3.float支持 4.bool支持 5.数组支持 完整调用 argparse库是python下的一个命令行参数管理库,支持int.str.float.bool.数组等5种基本数据类型.在解析命令行参数时还支持默认值.此外,还支持修改命令行参数,在代码中增加命令行参数等操作.通过argparse库,可以实现参数的简易管理,控制代码执行中的一些流程或参数值. 基本用法 1.int支持 argparse的写法 ,class_nums的默认值为7 par

  • Python中命令行参数argparse模块的使用

    目录 传入一个参数 位置参数 可选参数 默认参数 必需参数 argparse 模块是Python内置的用于命令项选项与参数解析的模块,可以轻松编写友好的命令行接口,能够帮助程序员为模型定义参数. 传入一个参数 add_argument()中的type参数表示传入参数的数据类型 import argparse #定义命令行解析器对象 parser = argparse.ArgumentParser(description='参数说明') #添加命令行参数 parser.add_argument('

  • python入门:argparse浅析 nargs='+'作用

    我就废话不多说了,大家还是直接看代码吧~ #aaa.py #version 3.5 import os #这句是没用了,不知道为什么markdown在编辑代码时,不加这一句,就不能显示代码高亮[汗] import argparse parser = argparse.ArgumentParser(description='Process some integers...') #初始化一个分析器 #parser.add_argument(中的参数) #__init__(self, option_s

  • Python命令行参数解析包argparse的使用详解

    目录 一.argparse简介 二.简单案例 三.ArgumentParser参数 四.add_argument指令参数解释 五.vars() 一.argparse简介 argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 import argparse 二.简单案例 简单使用,创建一个名为test.py的文件 # 导入 argparse 模块 import argparse # 创建一个argparse 的对象 parser = arg

  • Python argparse中的action=store_true用法小结

    目录 Python argparse中的action=store_true用法 前言 示例 官方文档 多了解一点儿 自定义 小结 思考 补充:python库Argparse中的可选参数设置 action=‘store_true‘ 的用法 一.没有default 二.有default Python argparse中的action=store_true用法 前言 Python的命令行参数解析模块学习. 示例 参数解析模块支持action参数,这个参数可以设置为’store_true’.‘store

  • Python命令行解析器argparse详解

    目录 第1章 argparse简介 1.1 解析 1.2 argparse定义三步骤 1.3  代码示例 第2章 参数详解 2.1 创建一个命令行解析器对象:ArgumentParser() 2.2 为命令行添加参数: add_argument() 方法 2.3 解析命令行的参数:parse_args() 2.4 命令行参数的输入 2.5 命令行参数的使用 总结 第1章 argparse简介 1.1 解析 argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,argp

  • python argparse传入布尔参数false不生效的解决

    跑代码时,在命令行给python程序传入bool参数,但无法传入False,无论传入True还是False,程序里面都是True.下面是代码: parser.add_argument("--preprocess", type=bool, default=True, help='run prepare_data or not') 高端解决方案 使用可选参数store_true,将上述代码改为: parse.add_argument("--preprocess", ac

  • python中argparse模块基础及使用步骤

    目录 argparse模块用法 一. 概念 二. 基础 1. 使用步骤 1.1 总步骤 1.2 创建对象 1.3 添加参数 1.4 解析参数 三. 使用案例 argparse模块用法 一. 概念 argsparse是python的命令行解析的标准模块,内置于python,不需要安装.这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行. 官方文档的位置:[https://docs.python.org/zh-cn/3/library/argparse.html] 在这里我们利用git

  • python中argparse模块及action='store_true'详解

    目录 Python argparse模块详解 1. 问题描述 2. add_argument() 方法官方介绍 action 3. 实例测试与对比 step01 step 02 step03:store后面是否可以自定义? step04:为什么我的输出值为None? step05 理解store_true,store_false Python argparse模块详解 argparse 是一个用来解析命令行参数的 Python 库,它是 Python 标准库的一部分.基于 python 2.7

  • Python中itertools模块的使用教程详解

    目录 itertools模块的介绍 无限迭代器(Infinite Iterators) 组合迭代器(Combinatoric Iterators) 有限迭代器(Iterators Terminating on the Shortest Input Sequence) itertools模块的介绍 在Python中,迭代器(Iterator)是常用来做惰性序列的对象,只有当迭代到某个值的时候,才会进行计算得出这个值.因此,迭代器可以用来存储无限大的序列,这样我们就不用把他一次性放在内存中,而只在需

  • Python中os模块功能与用法详解

    本文实例讲述了Python中os模块功能与用法.分享给大家供大家参考,具体如下: OS模块 Python的os模块封装了常见的文件和目录操作,本文只是列出部分常用的方法,更多的方法可以查看官方文档. 下面是部分常见的用法: 方法 说明 os.mkdir 创建目录 os.rmdir 删除目录 os.rename 重命名 os.remove 删除文件 os.getcwd 获取当前工作路径 os.walk 遍历目录 os.path.join 连接目录与文件名 os.path.split 分割文件名与目

  • python中argparse模块用法实例详解

    本文实例讲述了python中argparse模块用法.分享给大家供大家参考.具体分析如下: 平常在写命令行工具的时候,经常会带参数,所以用python中的argparse来实现. # -*- coding: utf-8 -*- import argparse args = "-f hello.txt -n 1 2 3 -x 100 -y b -z a -q hello @args.txt i_am_bar -h".split() # 使用@args.txt要求fromfile_pref

  • python中import reload __import__的区别详解

    import 作用:导入/引入一个python标准模块,其中包括.py文件.带有__init__.py文件的目录(自定义模块). import module_name[,module1,...] from module import *|child[,child1,...] 注意:多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境. 实例: pythontab.py #!/usr/bin/env python #encoding: utf-8

  • Python中__init__.py文件的作用详解

    __init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件. 通常__init__.py 文件为空,但是我们还可以为它增加其他的功能.我们在导入一个包时,实际上是导入了它的__init__.py文件.这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入. # package # __init__.py import re import urllib import sys impo

  • Python使用base64模块进行二进制数据编码详解

    前言 昨天团队的学妹来问关于POP3协议的问题,所以今天稍稍研究了下POP3协议的格式和Python里面的poplib.而POP服务器往回传的数据里有一部分需要用到Base64进行解码,所以就顺便看了下Python里面的base64模块. 本篇先讲一下base64模块,该模块提供了关于Base16,Base32,Base64,Base85和Ascii85的编码和解码相关的函数.有关poplib模块的内容,会在后面发上来.嗯,又挖了一个坑,这辈子挖的坑填不完了... 以下内容摘自http://bb

  • Python用sndhdr模块识别音频格式详解

    本文主要介绍了Python编程中,用sndhdr模块识别音频格式的相关内容,具体如下. sndhdr模块 功能描述:sndhdr模块提供检测音频类型的接口. 唯一一个API sndhdr模块提供了sndhdr.what(filename)和sndhdr.whathdr(filename)两个函数.但实际上它们的功能是一样的.(不知道多写一个的意义何在,what函数在内部调用了whathdr函数并把数据完完整整地返回) 在之前的版本,whathdr函数返回元组类型的数据,在Python3.5版本之

  • Python中 Global和Nonlocal的用法详解

    nonlocal 和 global 也很容易混淆.简单记录下自己的理解. 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值. global 语句是一个声明,它适用于整个当前代码块. 这意味着列出的标识符将被解释为全局变量. 尽管自由变量可能指的是全局变量而不被声明为全局变量. global 语句中列出的名称不得用于该全局语句之前的文本代码块中. global 语句中列出的名称不能定义为形式参数,也不能在 for 循环控制目标. class 定义.函数定义. impo

随机推荐