首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
  如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。比如如下名为test.py的脚本:

import sys
print ('Input argument[0] is %s and argument[1] is %s' %(sys.argv[0],sys.argv[1]))

在shell脚本中运行python test.py help可以得到 :Input argument[0] is test.py and argument[1] is help

  但是大多数情况下,脚本很可能需要多个参数,而且每次参数的类型用处各不相同,那么这个时候在参数前添加标签表明参数的类型和用途便十分有用,而利用argparse模块可以很方便得实现这一目的。

有代码如下:

import argparse# description参数可以用于插入描述脚本用途的信息,可以为空
parser = argparse.ArgumentParser(description="your script description")# 添加--verbose标签,标签别名可以为-v,这里action的意思是当读取的参数中出现--verbose/-v的时候
# 参数字典的verbose建对应的值为True,而help参数用于描述--verbose参数的用途或意义。
parser.add_argument('--verbose', '-v', action='store_true',help='verbose mode')args = parser.parse_args()  # 将变量以标签-值的字典形式存入args字典
if args.verbose:print("Verbose mode on!")
else:print("Verbose mode off!")

运行 python test.py:
  若后面跟了 --verbose/-v 的时候会输出 :Verbose mode on!
  如果什么都没有会输出 : Verbose mode off!
  如果输入了 --verbose/-v 以外的参数则会报错:unrecognized arguments

其中,–help 标签在使用argparse模块时会自动创建,因此一般情况不需要我们主动定义帮助信息。

对于命令行参数,有几个要点:

1)必须参数:这种模式用于确保某些必需的参数有输入。

parser.add_argument('--verbose', required=True, type=int)

required标签就是说–verbose参数是必需的,并且类型为int,输入别的类型会报错。

2)位置参数(positional arguments)
  位置参数与sys.argv调用比较像,参数没有显式的–xxx或者-xxx标签,因此调用属性也与sys.argv相同。

parser.add_argument('filename')  # 输入的第一个参数赋予名为filename的键
args = parser.parse_args()
print ("Read in %s" %(args.filename))

输入 python test.py test.txt 则会输出 Read in test.txt。
  此外,可以用nargs参数来限定输入的位置参数的个数,默认为1。当然nargs参数也可用于普通带标签的参数。

parser.add_argument('num', nargs=2, type=int)

  表示脚本可以读入两个整数赋予num键(此时的值为2个整数的数组)。nargs还可以 ‘*’ 用来表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值,即 0 到多个;‘+’ 表示读取至少1个该位置参数。’?’ 表示该位置参数要么没有,要么就只要一个。(PS:跟正则表达式的符号用途一致。)

parser.add_argument('filename')
parser.add_argument('num', nargs='*)
args = parser.parse_args()
print ("Read in %s --- %s" %(args.filename,args.num))

就可以运行 python test.py text.txt 1 2
输出为: Read in test.txt — [‘1’, ‘2’]

3)输入类型
  之前已经提到了用type参数就可以指定输入的参数类型。而这个type类型还可以表示文件操作的类型从而直接进行文件的读写操作。

parser.add_argument('file', type=argparser.FileType('r'))  # 读取文件
args = parser.parse_args()
for line in args.file:print line.strip()

4)参数默认值
  一般情况下会设置一些默认参数从而不需要每次输入某些不需要变动的参数,利用default参数即可实现。

parser.add_argument('filename', default='text.txt')

这个时候至直接运行python text.py就能得到Read in text.txt而不需要输入文件名了。

5)候选参数选择
  表示该参数能接受的值只能来自某几个值候选值中,除此以外会报错,用choices参数即可。比如:

parser.add_argument('filename', choices=['test1.txt', 'text2.txt'])

文章内容来自:https://www.jb51.net/article/133524.htm

Python命令行参数解析模块------argparse相关推荐

  1. Python命令行参数解析模块getopt使用实例

    这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...

  2. python命令行参数作用_Python命令行参数解析模块argparse

    前言 更多内容,请访问我的 个人博客. 以前 optparse 比较火,但是在python2.7版本后,官方不再维护这个模块,转而大力支持 argparse . argparse 模块可以让人轻松编写 ...

  3. python getopt使用_Python命令行参数解析模块getopt使用实例

    这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...

  4. argparse模块_Argparse:一个具体案例教会你python命令行参数解析

    问题描述: 现有一个用于数据格式转换的py脚本(多转一),执行时通过命令行传入一系列的参数控制其具体运行方式,使满足以下要求: 1. 必须传入需要处理的原始数据文件名 2. 可以指定输入文件的格式,若 ...

  5. Python命令行参数解析

    Python命令行参数解析 Python命令行解析是指读取终端传入的参数 sys.argv属性 这个是sys库立面的一个属性,其用于接收传入程序的命令行参数.它是一个列表.也就是差不多下面这种类型 s ...

  6. python命令行参数解析OptionParser类用法实例

    python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下:     from opt ...

  7. python 命令行参数-Python 命令行参数解析

    Python用于编写脚本的场景非常多,如何处理脚本(命令行)的参数当然非常关键 首先导入sys,参数列表在sys.arg中 import sys if __name__ == '__main__': ...

  8. ​【Python】Python中好用的命令行参数解析模块

    大家好,我是小喵! 关注和星标『AI算法小喵』,和小喵一起学习AI算法!

  9. Python中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

最新文章

  1. 学习Web前端需要避免哪些错误
  2. 数据库的设计经验(经典)
  3. 初识python教学反思_[python第一课]初识python
  4. ASP.NET WebHooks RC 1发布
  5. 这不关我的事,别烦我!
  6. 嘉年华回顾丨 王津银带你深入解析自动化运维能力框架
  7. mysql 运维常见操作
  8. 作业要求 20180925-1 每周例行报告
  9. 如何下载省/市/县级行政区划地图_下载省/市/县级行政区划地图图文教程
  10. 计算机等级考试网络工程师介绍,全国计算机等级考试网络工程师
  11. Opencv函数 rectangle函数与Rect函数的用法
  12. Insyde uefi 隐藏设置_使用u盘GPT+UEFI模式安装windows10系统步骤详细图解
  13. c语言程序长度单位换算表大全,小学数学单位换算公式大全(附专项训练)
  14. 哲学思考之否定之否定规律
  15. mysql交互式服务检测_MySQL innotop实时监测工具
  16. 编程语言python这个词怎么翻译_五大理由从 Python 转到 Go 语言【已翻译100%】...
  17. 路边电动车快充多少安?知识介绍
  18. En-Tan-Mo(ETM)项目周报(7.5-7.11)
  19. mac 查ip linux,如何通过mac地址查ip,手把手教你Mac怎么查看ip地址
  20. Echarts 南海诸岛简图显示位置调整

热门文章

  1. [Django]APP级别的静态文件处理
  2. 设置Socket缓冲区
  3. 详解synchronized锁的各种用法及注意事项
  4. 阿里一面:如何保证API接口数据安全?
  5. 【高并发】面试官:说说缓存最关心的问题?有哪些类型?回收策略和算法?...
  6. 45本程序员圣经级别书籍,包邮送到家!
  7. 技术人员关注的几个优质公众号
  8. 强烈安利8个高质量的办公软件,提高你的办公效率
  9. 强势分享5款超级实用的办公软件,建议收藏!
  10. 有哪些时间管理的习惯?