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.使用单引号(' ...
随机推荐
- mysql配置和管理(转载)
MySQL的配置与管理 (2012-08-09 13:06:59) 转载▼ 标签: mysql 配置 管理 分类: MySQL 安装 yum -y install mysql-server 启动服 ...
- EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性
---------------------目录-------------------------- EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2 ...
- 【mysql】数据库Schema的优化
由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大 ...
- ldap文件
demo.ldif dn:dc=sgp,dc=com objectclass:domain objectclass:top o:Michael Blog dc:sgp dn:ou=Developer, ...
- maven常见问题问答(转)
转自:http://www.oschina.net/question/158170_29368 1.前言 Maven,发音是[`meivin],"专家"的 意思.它是一个很好的项目 ...
- Socket编程:之TCP案例
转载请加上博文引用:http://i.cnblogs.com/EditPosts.aspx?postid=5733248&update=1 服务端: #include <stdio.h& ...
- C/C++函数指针(typedef简化定义)
学习要点: 1,函数地址的一般定义和typedef简化定义; 2,函数地址的获取; 3,A函数地址作为B函数参数的传递; 函数存放在内存的代码区域内,它 ...
- React(0.13) 定义一个使用动画
<!DOCTYPE html> <html> <head> <title>React JS</title> <script src=& ...
- ubuntu(14.04) 网路管理
网络五元素: MAC地址 IP地址 网络掩码 网关 DNS:将ip地址转换成域名 ping ifconfig route /etc/resolv.conf netstat ip nmap cat /e ...
- uploadify.js参数说明(转)
一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 . buttonClass ” 按钮样式 buttonCursor ‘ ...