【python3基础】命令行参数及 argparse
在使用 argparse 解析 bool 参数时,需要设定 add_argument 的 action 参数为 'store_true' 或者 'store_false',而不是设定 type 参数为 bool,具体原因是,如果设定 type=bool,那么无论该参数传 True 还是 False,最后都只能得到 True。【这设定反人类】
命令行参数及 argparse 包
在我们需要控制不同分支代码的执行时,命令行参数最适用了,代码写好后只需在命令行设定不同的参数运行即可。
在命令行参数的解析中,可以用到 argparse 包。
入门 argparse 可以参考教程 https://docs.python.org/zh-cn/3.6/howto/argparse.html
给出一个最简单的 argparse 解析命令行参数的例子:(以下代码保存在 tmp.py 文件中)
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--seed',
dest='seed', type=int, default=0)
args = parser.parse_args()
print(args)
通过在命令行执行python3 tmp.py --seed 1来改变 seed 参数的值,seed 参数的值可以通过args.seed获取。
argparse 解析 bool 参数错误做法
argparse 对 bool 类型数据的传递,和其它类型如 int、float、str 不一样,如下所示:
import argparse
parser = argparse.ArgumentParser()
# 这种写法是错的,结果不是你所想象的
parser.add_argument('--test',
dest='test', type=bool, default=False)
args = parser.parse_args()
print(args)
如果我们在命令行执行python3 tmp.py --test False和python3 tmp.py --test True,我们会得到同样的结果,args.test 都会是 True。这有点反人类了。
argparse 解析 bool 参数正确做法 1
在传递 bool 值时,正确的做法是:
import argparse
parser = argparse.ArgumentParser()
# action 的取值可以是 'store_true'、'store_false',都是小写
parser.add_argument('--test',
dest='test', action='store_true', default=False)
parser.parse_args()
print(args)
之后如果需要 test 参数为真,那么就在命令行执行python3 tmp.py --test,否则,就不要带上 test 参数,如python3 tmp.py。
argparse 解析 bool 参数正确做法 2
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--test',
dest="test", action='store_true')
parser.add_argument('--no_test',
dest="test", action='store_false')
parser.set_defaults(test=False)
args = parser.parse_args()
print(args)
如果需要设置args.test为 True,那么执行python3 tmp.py --test;如果需要设置args.test为 False,执行 python3 tmp.py --no_test。
References
Parsing boolean values with argparse - Stack Overflow
【python3基础】命令行参数及 argparse的更多相关文章
- Python的命令行参数(argparse)
参考:https://www.cnblogs.com/lindaxin/p/7975697.html 参考:https://www.cnblogs.com/dengtou/p/8413609.html ...
- python命令行参数解析模块argparse和docopt
http://blog.csdn.net/pipisorry/article/details/53046471 还有其他两个模块实现这一功能,getopt(等同于C语言中的getopt())和弃用的o ...
- Python命令行参数解析模块argparse
当写一个Python脚本时经常会遇到不同参数不同功能的情况,如何做一个更好看的命令帮助信息以及对命令参数解析呢? 这就需要使用argparse模块 #!/usr/bin/env python # -* ...
- python 命令行参数——argparse模块的使用
以下内容主要来自:http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html argparse ...
- python3获得命令行输入的参数
外部直接执行python文件时,我们有时需要获得命令行的参数 获得命令行参数的两种方式 1.通过sys.argv sys.argv:获得一个参数列表,第一个值为文件名本身,通过sys.argv ...
- Python3 命令行参数
Python 提供了 getopt 模块来获取命令行参数. $ python test.py arg1 arg2 arg3 Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: ...
- $命令行参数解析模块argparse的用法
argparse是python内置的命令行参数解析模块,可以用来为程序配置功能丰富的命令行参数,方便使用,本文总结一下其基本用法. 测试脚本 把以下脚本存在argtest.py文件中: # codin ...
- 【NS-3学习】ns3-模拟基础:关键概念,日志,命令行参数
前言 本篇博客先介绍在仿真过程中会使用到的一些关键概念,然后介绍便于调试仿真脚本的常用技术:日志.命令行参数. 关键概念 节点 在因特网术语中,主机(终端)是指任何一台连接到网络的计算设备.ns-3并 ...
- C基础知识(14):命令行参数
命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数. 应当指出的是,argv[0]存储程序的名称,argv[1]是一个 ...
随机推荐
- 引用极光jar包之后出现控制台日志打印不出来的问题。解决!
由于极光的jar包中引用的有log4j,项目本身也引用有log4j,如果版本有冲突,则会出现控制台日志记录打印不出来的现象.解决:引用极光jar包的时候,排除log4j. <dependency ...
- 死磕 java同步系列之redis分布式锁进化史
问题 (1)redis如何实现分布式锁? (2)redis分布式锁有哪些优点? (3)redis分布式锁有哪些缺点? (4)redis实现分布式锁有没有现成的轮子可以使用? 简介 Redis(全称:R ...
- Python3爬虫基础实战篇之机票数据采集
项目:艺龙国内机票实时数据爬虫 使用模块:requests(请求模块),js2py(js执行模块),json(解析json),xpath(解析网页). 项目流程: 分析网站数据来源. 编写爬虫脚本. ...
- Docker系列(一):容器监控工具Weave Scope安装
项目进行容器化之后,配套的基础设施包括监控.编排.管理等都需要进行一并完善.这里也是自己一边学习一边进行记录. Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直 ...
- Stanford公开课《编译原理》学习笔记(2)递归下降法
目录 一. Parse阶段 CFG Recursive Descent(递归下降遍历) 二. 递归下降遍历 2.1 预备知识 2.2 多行语句的处理思路 2.3 简易的文法定义 2.4 文法产生式的代 ...
- C++——指针
目录 一.地址和指针 1.1内存 1.2针和指针变量 二.指针变量 2.1始化 2.2赋值 2.3指针类型算术运算 2.4指针类型关系运算 2.5指向指针的指针 三.指针与数组 3.1指针运算 3.2 ...
- HTML5 原生拖放
前言: HTML5提供专门的拖拽与拖放的API,可以方便的指定某个元素可拖动,可以创建自定义的可拖动元素和放置目标 相关知识点: 1.拖放事件 拖放元素时,将依次触发下列事件 dragstart 按 ...
- 从零开始搭建WebAPI Core_SqlSugar管理系统 (持续更新中......)
从零开始搭建WebAPI Core_SqlSugar管理系统 前言 本系列皆在从零开始逐步搭建,后台管理系统服务端部分,后续还会推出前端部分. 这次的目的是搭出一个功能完善的 本次系列技术栈以下几个部 ...
- spring-boot-devtools 热部署
一.简单介绍 spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是修改代码后自动启动springboot服务,速度比手动停止后再启动要快,节省出来的并不是手工操作 ...
- 自动下载zar配置管理
maven 下载: https://maven.apache.org/ 官网 download 下载:Binary zip archive apache-maven-3.6.2-bin.zip 免安装 ...