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详解的更多相关文章

  1. Python闭包详解

    Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...

  2. [转] Python Traceback详解

    追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a   Python Traceback详解   刚接触Python的时候,简单的 ...

  3. python 数据类型详解

    python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...

  4. Python 递归函数 详解

    Python 递归函数 详解   在函数内调用当前函数本身的函数就是递归函数   下面是一个递归函数的实例: 第一次接触递归函数的人,都会被它调用本身而搞得晕头转向,而且看上面的函数调用,得到的结果会 ...

  5. python线程详解

    #线程状态 #线程同步(锁)#多线程的优势在于可以同时运行多个任务,至少感觉起来是这样,但是当线程需要共享数据时,可能存在数据不同步的问题. #threading模块#常用方法:'''threadin ...

  6. python数据类型详解(全面)

    python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...

  7. Python Collections详解

    Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...

  8. python生成器详解

    1. 生成器 利用迭代器(迭代器详解python迭代器详解),我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记 ...

  9. 转 python数据类型详解

    python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...

随机推荐

  1. m4, autoconf

    http://www.gnu.org/software/m4/m4.html GNU M4 is an implementation of the traditional Unix macro pro ...

  2. 移植到windows下的iconv

    This is a short memo about installing iconv on Windows host (specifically: Windows 7 SP1 x64). Iconv ...

  3. 生命周期方法调用,以及在onStop()方法中处理草稿信息

    生命周期方法调用顺序 1. 从会话列表界面跳转到信息列表界面. 07-17 17:29:18.718: I/txrjsms(19370): MessageListActivity.onCreate 0 ...

  4. (原)ubuntu挂载及开机自动挂载网络端的文件夹的方法

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7160792.html 参考网址: http://blog.csdn.net/tlight/articl ...

  5. (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 并不挶泥在这个点子上面,它反而往后站一步,看看他们已经做好的这个网站,可以再怎么包装成另一个完完全全不同的网站?所有的人所做的每件失败的事情中, 一定有碰到或含有成功的答案」在里面,只是他们不知道而已。 人不怕失败」,只怕宣布失败」

    (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 今天读到 一个非常励志人心的故事 ,就像现在「叶问」有「前传」,最近很火红的团集购网站Groupon 也出现了「Groupon前传」 ...

  6. Vue.js 综合

    <!DOCTYPE HTML> <html> <head> <title>vue.js 处理用户输入</title> <script ...

  7. 【Algorithm】基数排序

    一. 算法描述 基数排序(以整形为例),将整形10进制按每位拆分,然后从低位到高位依次比较各个位.主要分为三个过程: 分配,先从个位开始,根据位值(0-9)分别放到0~9号桶中(比如53,个位为3,则 ...

  8. myeclipse 遇到的一些问题及解决方案

    1..提示键配置 一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多 ...

  9. Android中ViewPager实现滑动条及与Fragment结合的实例教程

    ViewPager类主要被用来实现可滑动的视图功能,这里我们就来共同学习Android中ViewPager实现滑动条及与Fragment结合的实例教程,需要的朋友可以参考下 自主实现滑动指示条先上一个 ...

  10. Maven for Eclipse 第二章 ——安装 m2eclipse插件

    m2eclipse 是一个提供了 Maven 与 Eclipse 整合的插件.它的意图是桥接上 Maven 和 Eclipse 之间的缺口.通过 Maven 原型提供的简单直白的接口创建项目,它使 M ...