python argparse例子实践
python 解析命令行读取参数,在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。
万能的python自带了sys.arg、argparse、optparse模块等,使读取命令行参数变得简单而规范。
sys.argv
解释:就是一个从程序外部获取参数的桥梁,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv可以看作是一个列表,所以才用[]提取其中的元素。 第一个元素是程序本身,后续的才依次是外部给与的参数。
1. sys.argv 是命令行参数列表
2. len(sys.argv)是命令行参数个数
3. sys.argv[0]表示脚本名
4. 注意参数顺序
实例
import sys print(sys.argv) #['test_argv.py', 'hello', 'python']
print(len(sys.argv)) #3
print('第一个参数',sys.argv[0]) test_argv.py
执行命令:
python 脚本名称 params params1

argparse模块
1) 一般模式
大多数情况下,脚本很可能需要多个参数,而且每次参数的类型用处各不相同,那么这个时候在参数钱添加标签表明参数的类型和用途十分有用,而利用argparse模块可以方便的实现这一目的。举例如下:
import argparse
parser = argparse.ArgumentParser(description="your script description")
parser.add_argument("-unit", help="increase output verbosity",nargs="?")
args = parser.parse_args() if args.unit:
print('unit 存在')
else:
print('unit is none', args.unit)
运行 python argp.py 后面跟 -unit / -u 时,例如: python argp.py -u hello 会输出hello ;
若直接运行 python argp.py -u 会输入None;
若输入-unit / -u 之外的参数会报错: argp.py: error: unrecognized arguments: -r
若不加 nargs = "?",直接输入python argp.py -u ,会报错: argp.py: error: argument -unit: expected one argument,说明加了-unit,后面必须要传参数;
nargs="?"表示参数可以输入0或者1个;Jenkins构建时,若参数为非必填参数,可能会需要添加改配置;
2)必需参数
这种模式用于确保某些必需的参数有输入。
parser.add_argument('--unit', required=True, type=int)
required标签就是说--unit参数是必需的,并且类型为int,输入别的类型会报错。
3) 位置参数
位置参数与sys.argv调用比较像,参数没有显示的--xxx或者-xxx标签,因为调用与sys.argv相同。
import argparse
parser = argparse.ArgumentParser(description="your script description")
parser.add_argument('env') # 输入的第一个参数赋予名为env的键
args = parser.parse_args()
print('env is %s'%args.env)
输入 python argp.py test, 输出>>> env is test;
可用nargs参数限定输入的位置参数个数,默认为1.
parser.add_argument('num', nargs=2, type=int)
表示脚本可用读入2个整数赋予num键;
nargs也可以用 '*' 表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值;
'+'表示至少读取1个位置参数;
'?'表示该位置参数要么没有,要么只有一个。
4)输入类型
可用type参数指定输入的参数类型,type类型还可以表示文件的操作类型从而直接进行文件的读写操作。
parser.add_argument('file', type=argparser.FileType('r')) # 读取文件
args = parser.parse_args()
for line in args.file:
print line.strip()
5)参数默认值
一般情况下会设置一些默认参数,从而不需要每次输入某些不需要变动的参数,利用default参数即可实现。
parser.add_argument('filename', default='text.txt')
6)候选参数选择
表示该参数能接受的值只能来自某几个值得候选,除此以外会报错,用choices参数即可。
parser.add_argument('filename', choices=['test1.txt', 'text2.txt'])
参考:https://www.cnblogs.com/arkenstone/p/6250782.html
python argparse例子实践的更多相关文章
- python argparse用法总结
转:python argparse用法总结 1. argparse介绍 argparse是python的一个命令行解析包,非常适合用来编写可读性非常好的程序. 2. 基本用法 prog.py是我在li ...
- Python argparse 处理命令行小结
Python argparse 处理命令行小结 1. 关于argparse是python的一个命令行解析包,主要用于处理命令行参数 2. 基本用法test.py是测试文件,其内容如下: import ...
- Redis的Python实践,以及四中常用应用场景详解——学习董伟明老师的《Python Web开发实践》
首先,简单介绍:Redis是一个基于内存的键值对存储系统,常用作数据库.缓存和消息代理. 支持:字符串,字典,列表,集合,有序集合,位图(bitmaps),地理位置,HyperLogLog等多种数据结 ...
- paip.复制文件 文件操作 api的设计uapi java python php 最佳实践
paip.复制文件 文件操作 api的设计uapi java python php 最佳实践 =====uapi copy() =====java的无,要自己写... ====php copy ...
- Python argparse 模块
Python argparse 模块 test.py: import argparse argparser = argparse.ArgumentParser(add_help=False) argp ...
- python argparse sys.argv
python argparse sys.argv class WeiLearningArgumentParser(argparse.ArgumentParser): def __init__(self ...
- [Spark][Python]groupByKey例子
Spark Python 索引页 [Spark][Python]sortByKey 例子 的继续: [Spark][Python]groupByKey例子 In [29]: mydata003.col ...
- [Spark][Python]sortByKey 例子
[Spark][Python]sortByKey 例子: [training@localhost ~]$ hdfs dfs -cat test02.txt00002 sku01000001 sku93 ...
- python - argparse 模块学习
python - argparse 模块学习 设置一个解析器 使用argparse的第一步就是创建一个解析器对象,并告诉它将会有些什么参数.那么当你的程序运行时,该解析器就可以用于处理命令行参数. 解 ...
随机推荐
- Python中type()详解:动态创建类
众所周知: type()函数可以查看变量的类型: 先看一个简单的列子来看一下type查看变量类型 class Animal(): pass a=Animal() print(type(a)) prin ...
- java后端处理高并发
一个登陆页面可能会被很多账户同时登陆或者注册,那么我们就好处理这些并发,否则降低程序的使用率,甚至程序奔溃,下面一段代码处理程序的高并发效果不错. /** *@author xiaoxie *@dat ...
- Linux系统Zip压缩和解压缩
Linux系统可以使用Zip来压缩占用空间较大的文件以便进行文件传输,传输完成后再进行解压缩来获取原文件.Linux安装Zip的命令为 apt-get install zip 安装完成后,使用 zip ...
- JS与小程序页面生命周期
Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 生命周 ...
- python中IO多路复用、协程
一.IO多路复用 IO多路复用:检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写) import socket def get_data(key): client ...
- 匿名函数、sorted()、filter()、map()、递归
一.匿名函数 1.lambda 匿名函数 方法 lambda 参数:返回值 (函数名统一叫lambda) def func(n): return n**2 print(func(3)) #这是一个普通 ...
- JS多线程之Web Worker
什么是Web Worker web worker 是运行在后台的 JavaScript,不会影响页面的性能. 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web wor ...
- php遍历目录与文件夹的多种方法详解
遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的.PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴.下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋 ...
- h5格式化微信 nickname 保留第一个字,其余用*显示
截取微信nickname中需要注意的是,表情符号和特殊字符,如果你不用正则过滤掉的话,使用slice(0,1)直接截取第一个字符串是不行的,因为表情符号占用两个字节,截取一半,ios会报错,andro ...
- MyBatis和Spring整合案例
1.所需要导入的jar文件 !--MyBatis和Spring的整合包 由MyBatis提供--> <dependency> <groupId>org.mybatis&l ...