python argparse详解
1.argparse模块作用
用于解析命令行参数
2.位置参数和可选参数
运行以下代码:
import argparse
parser = argparse.ArgumentParser()
args = parser.parse_args()
运行结果:

参数为-h或--help时,parser.parse_args()会输出命令行的位置参数position arguments和可选参数optional arguments
位置参数:按照参数的顺序解析,参数必填
可选参数:以-或--开头,参数非必填
位置参数,可选参数示例如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("num", type=int, help="position")
parser.add_argument("--mode", "-m", type=int, help="optional")
args = parser.parse_args()
运行结果:

num为一个位置参数,type表示参数的类型,参数默认都是string类型的,help表示参数的描述
--mode,以--开头,为一个可选参数,可以有多个别名(--mode,-m)
可选参数,不是必填的,一般用来作条件分支,如下所示:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("num", type=int, help="position")
parser.add_argument("--mode", "-m", type=int, help="optional")
args = parser.parse_args()
result = 0
if args.mode == 1:
result = args.num ** 2
else:
result = args.num * 2
print(result)
运行结果:

当mode=1时,计算num的平方,否则,计算num*2
指定参数的范围,choice
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("num", type=int, choices=[5, 6, 7], help="position")
parser.add_argument("--mode", "-m", action="store_true", help="optional")
args = parser.parse_args()
result = 0
if args.mode:
result = args.num ** 2
else:
result = args.num * 2
print(result)
运行结果:

3.可选参数
位置参数没有太多要讲的,必填,类型必须和定义的一致(默认为string),否则会报错。
可选参数有以下几种action
1)store_true
有参数时为true,没有为false,有参数时不能指定参数的值
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("num", type=int, help="position")
parser.add_argument("--mode", "-m", action="store_true", help="optional")
args = parser.parse_args()
result = 0
if args.mode:
result = args.num ** 2
else:
result = args.num * 2
print(result)
运行结果:

2)count
数值,-m表示1,-mm或-m -m表示2,以此类推
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("num", type=int, choices=[5, 6, 7], help="position")
parser.add_argument("--mode", "-m", action="count", help="optional")
args = parser.parse_args()
result = 0
if args.mode == 1:
result = args.num ** 2
elif args.mode == 2:
result = args.num * 2
else:
result = args.num
print(result)

不加参数,表示None,可以设置默认count,则-m表示默认值+1
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("num", type=int, help="position")
parser.add_argument("--mode", "-m", action="count", default=1, help="optional")
args = parser.parse_args()
result = 0
if args.mode == 1:
result = args.num ** 2
elif args.mode == 2:
result = args.num * 2
else:
result = args.num
print(result)
运行结果:

python argparse详解的更多相关文章
- Python闭包详解
Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...
- [转] Python Traceback详解
追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a Python Traceback详解 刚接触Python的时候,简单的 ...
- python 数据类型详解
python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...
- Python 递归函数 详解
Python 递归函数 详解 在函数内调用当前函数本身的函数就是递归函数 下面是一个递归函数的实例: 第一次接触递归函数的人,都会被它调用本身而搞得晕头转向,而且看上面的函数调用,得到的结果会 ...
- python线程详解
#线程状态 #线程同步(锁)#多线程的优势在于可以同时运行多个任务,至少感觉起来是这样,但是当线程需要共享数据时,可能存在数据不同步的问题. #threading模块#常用方法:'''threadin ...
- python数据类型详解(全面)
python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...
- Python Collections详解
Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...
- python生成器详解
1. 生成器 利用迭代器(迭代器详解python迭代器详解),我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记 ...
- 转 python数据类型详解
python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...
随机推荐
- 转:Linux网卡驱动程序编写
Linux网卡驱动程序编写 [摘自 LinuxAID] 工作需要写了我们公司一块网卡的Linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微软垄断的强有力武器,日益受到大 ...
- Windows开发进阶之VC++中如何实现对话框的界面重绘
技术:Windows 系统+Visual studio 2008 概述 应用程序界面是用户与应用程序之间的交互的桥梁和媒介,用户界面是应用程序中最重要的组成部分,也是最为直观的视觉体现.对用户而言 ...
- 【Mysql】php执行脚本进行mysql数据库 备份和还原
一.mysql备份 1.这里使用 php脚本的形式进行mysql 数据库的备份和还原,想看linux的sh版本的,有时间再贴. 2.找到 mysql的[mysqldump] 执行程序,建议phpinf ...
- Easyui入门视频教程 第08集---登录实现 ajax button的使用
目录 ----------------------- Easyui入门视频教程 第09集---登录完善 图标自定义 Easyui入门视频教程 第08集---登录实现 ajax button的使用 ...
- (原+转)win7上编译caffe支持python及matlab
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7126126.html 参考网址: https://github.com/happynear/caffe ...
- (原)luarocks更新某个模块
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6424398.html 参考网址: https://github.com/torch/nn/issues ...
- ubuntu sublime 破解
1.去其官方网站http://www.sublimetext.com/ 把linux版下载下来,解开压缩包,放在你希望的路径下. 2.用vim将其打开 . vim sublime_text 3.将文件 ...
- 【DeepLearning】UFLDL tutorial错误记录
(一)Autoencoders and Sparsity章节公式错误: s2 应为 s3. 意为从第2层(隐藏层)i节点到输出层j节点的误差加权和. (二)Support functions for ...
- nginx 中文和英文资料
http://www.nginx.cn/doc/ http://manual.51yip.com/nginx/ http://tool.oschina.net/apidocs/apidoc?api=n ...
- git学习笔记(三)—— 远程仓库
一.gitHub&&SSH Key 为git仓库提供托管服务的,所以注册一个github账号,就可以免费获得git远程仓库. 本地Git仓库和GitHub仓库之间的传输是通过SSH加密 ...