python之getopt
getopt可以分析输入的参数,根据不同的参数输入不同的命令
getopt.getopt( [命令行参数列表], "短选项", "长选项列表" )
getopt这个函数,就是用来抽取sys.argv获得用户输入来确定后续操作的
getopt是一个模块,而这个模块里面又有getopt函数,
函数返回2个值 opts 和 args
opts是一个存有所有选项及其输入值的元组,当输入确定后,这个值就不能更改了
args是除去有用的输入以后剩余的部分
#!/usr/bin/env python2.6
# coding: utf-8
import getopt
import sys shortargs = 'f:t' #短选项
longargs = ['nocolor', 'format', '--f_long', '---f_longlong=']
opts, argv = getopt.getopt( sys.argv[1:] , shortargs, longargs)
opts = dict(opts)
print opts
print argv
1 短选项名后面的冒号: ,表示该选项必须要有附加的参数如 -f fir; 如果不加冒号,不会讲参数放到args中,如-t long
2 长选项里面的数据,需要在前面加--,不然报异常;有等号说明要有参数,例如--format(正确) --format=1(错误)
选项的写法
对于短选项。“-"号后面要紧跟一个选项字母,如果此选项还有额外参数,可以用空格分开,也可以不分开,长度任意,可以用引号,下面是正确的
-o
-oa
-obbbb
-o "a b"
对于长选项,“--”后面要跟一个单词,如果还有此选项的额外参数,后面要紧跟”=“,再加上参数,注意”=“的前后不能有空格,下面是正确的写法
--help=man
不正确的写法
-- help=file
--help =file
--help = file
--help= file
如何使用getopt进行分析
使用getopt模块分析命令行参数大体上分为三个步骤
1 导入getopt,sys模块
2 分析命令行参数
3 处理结果
#!/usr/bin/env python2.6
# coding: utf-8
import getopt,sys try:
opts, args = getopt.getopt( sys.argv[1:], "ho:", [ "help", "output="] )
except getopt.GetoptError:
# print help information and exit:
print 'error'
sys.exit(0) print opts
print args
1 处理所使用的函数是getopt,因为是直接import导入的getopt模块,所以加上限定getopt才可以
2 使用sys.argv[1:] 过滤掉第一个参数(它是执行脚本的名字,不应算作参数的一部分)
3 使用短选项分析串”ho:“,当第一个选项只是表示开关状态时,后面不带附加参数时,在分析串写入选项字符,当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号,所以"ho:",就表示"h"是一个开关选项,"o:"表示后面应该带一个参数
4 使用长选项分析串列表:["help","output="],长选项串也有开关状态,即后面不用"="号,如果跟一个"="号则表示后面应有一个参数,这个长格式表示"help"是一个选项开关;"output="则表示后面应该带一个参数
5 调用getopt函数,函数返回两个列表,opts和args,opts为分析出的格式信息,args为不属于格式信息的剩余的命令行参数,opts是一个二元组的列表,每个元素为(选项串,附加参数),如果没有附加参数则为空串
一个栗子
'-h -o file --help --output=out file1 file2'
在分析完成之后,opts应该是:
[ ( '-h','' ), ( '-o','file' ), ( '--help', '' ), ( '--output', 'out' ) ]
而args是:
[ 'file1', 'file2' ]
下面是对分析出的参数进行判断存在,然后做下一步处理,
for o, a in opts:
if o in ("-h", "--help"):
#usage() #处理函数
sys.exit()
if o in ("-o", "--output"):
# 处理函数
sys.exit()
使用一个循环,每次从opts中取出一个二元组,赋给两个变量,o保存选项参数,a为附加参数,判断是否存在,近一步处理
完整代码:
#!/usr/bin/env python2.6
# coding: utf-8 import getopt, sys def usage():
print "Usage:%s [ -a|-o|-c ] [ --help|--output ] args..." %( sys.argv[0] ) if __name__ == '__main__' :
try :
shortargs = 'f:t'
longargs = [ 'directory-prefix=', 'format', '--f_long=' ]
opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs ) print '***********************opts**********************'
print 'opts=', opts
print '***********************args**********************'
print 'args=', args for opt, arg in opts:
if opt in ( '-h', '--help' ):
usage()
sys.exit(1)
elif opt in ( '--f_long' ):
print '--f_long=', opt
else:
print '%s==========>%s' %( opt, arg )
except getopt.GetoptError:
print 'getopt error'
usage()
sys.exit(1)
执行结果
参考文档: https://www.cnblogs.com/chushiyaoyue/p/5380022.html
python之getopt的更多相关文章
- (转载)python: getopt的使用;
注: 该文转载于https://blog.csdn.net/tianzhu123/article/details/7655499python中 getopt 模块, 该模块是专门用来处理命令行参数的 ...
- 【python】getopt使用
来源:http://blog.chinaunix.net/uid-21566578-id-438233.html 注意对比:[python]argparse模块 作者:limodou版权所有limod ...
- Python之getopt模块
1.getopt——C风格命令行解析 http://docs.python.org/2.7/library/getopt.html#module-getopt getopt.getopt(args, ...
- python通过getopt模块获取执行命令参数
python脚本和shell脚本一样可以获取命令行的参数,根据不同的参数,执行不同的逻辑处理. 通常我们可以通过getopt模块获得不同的执行命令和参数. 下面我通过新建一个test.py的脚本解释下 ...
- Python中getopt()函数的使用
在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能.目前有短选项和长选项两种格式.短选项格式为"-"加上单个字母选项:长选项为"--"加 ...
- python 使用getopt 获取配置参数
在工程中特别是稍微大一点的项目基本上都会用到配置,就会涉及到配置文件的读取,配置参数的读取. 常用的解析配置文件的是configParser,解析命令行参数的则为getopt. getopt的参数可以 ...
- python函数getopt用法
python内建模块,用来处理命令行参数 格式:getopt(args, shortopts, longopts = []) 参数args一般是sys.argv[1:]sys.argv[0]表示执行文 ...
- python module getopt usage
import getopt import sys def usage(): print 'this is a usage.' def main(): try: print sys.argv #sys. ...
- Python module ---- getopt
optlist, argv = getopt.getopt(argv, 'cdsarRvn:e:E:f:F:w:O:m:M:o:g:') 模块getopt用于分割了main函数的参数,参数args一般 ...
随机推荐
- mobilefacenet
insightface作者训练的mobileFaceNet: https://github.com/deepinsight/insightface/issues/214 ncnn的转换:http ...
- [跨界思考|瑞典|IKEA]有意思的宜家|IKEA
来自北欧瑞典的IKEA无疑是成功的企业.根据我最近几天的去宜家的体验和来自网上的资料,我发现IKEA不止是成功的企业,而且可以说是一家独特又伟大的公司. 说到IKEA,就不得不说下它的创始人:坎普拉德 ...
- C#基础知识之扩展方法
扩展方法需要满足的条件: 1.扩展方法必须定义在静态类里. 2.扩展方法必须是静态方法. 3.扩展方法的第一个参数以this修饰符为前缀. 4.扩展方法必须在使用它的类的扩展方法内,否则必须显示的us ...
- Pycharm中Matplotlib图像不在弹出独立的显示窗口
File | Settings | Tools | Python Scientific | Show plots in toolwindow 如图, 取消勾选此时,在执行就会在独立的窗口中弹出Matp ...
- 【NOIP2016提高A组模拟7.17】锦标赛
题目 403机房最近决定举行一场锦标赛.锦标赛共有N个人参加,共进行N-1轮.第一轮随机挑选两名选手进行决斗,胜者进入下一轮的比赛,第二轮到第N-1轮再每轮随机挑选1名选手与上一轮胜利的选手决斗,最后 ...
- hdu 6214 : Smallest Minimum Cut 【网络流】
题目链接 ISAP写法 #include <bits/stdc++.h> using namespace std; typedef long long LL; namespace Fast ...
- mysql WHERE语句 语法
mysql WHERE语句 语法 作用:如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句.珠海大理石平尺 语法:SELECT 列名称 FROM 表名称 WHERE 列 运算 ...
- 【翻译】详解HTML5 自定义 Data 属性
原标题:HTML5 Custom Data Attributes (data-*) 你是否曾经使用 class 或 rel 来保存任意的元数据,只为了使你的JavaScript更简单?如果你回答是的, ...
- C++ 对象间通信框架 V2.0 ××××××× 之(二)
公共头文件:ss_type_def.h ================================================================================ ...
- HDU 6438 Buy and Resell
高卖低买,可以交易多次 维护一个优先队列,贪心 相当于每天卖出 用当前元素减优先队列最小得到收益 用0/卖出,1/买入标志是否真实进行了交易,记录次数 #include<bits/stdc++. ...