python getopt.getopt,Python optparser 和getopt
以下分为
1)python的命令行参数;
2)使用getopt模块处理Unix模式的命令行选项;
3)使用强大的optparser模块处理Unix模式的命令行选项
1). python的命令行参数:
python和C语言,shell脚本一样,可以接受命令行参数,并通过sys模块访问。
e.g. python scripyname.py "hello" "world" 1 2 3
import sys
args = sys.argv[1:]
filename = sys.argv[0]
sys.argv[0]是脚本的名字"scripyname.py",
sys.argv[1]是第一个参数,
sys.argv[1] == "hello",
sys.argv[2] == "world" ,
sys.argv[3] == "1" ...
调用方式如下:python scriptname.py ${arg1} ${arg2} ${arg3}
2). 使用getopt模块处理Unix模式的命令行选项:
getopt模块用于抽出命令行选项和参数,也就是sys.argv。
命令行选项使得程序的参数更加灵活。支持短选项模式和长选项模式。
e.g.python scriptname.py -f 'hello' --directory-prefix=/home -t --format 'a' 'b'
import getopt
shortargs = 'f:t'
longargs = ['directory-prefix=', 'format', '--f_long=']
opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs )getopt函数的格式是getopt.getopt ( [命令行参数列表], "短选项", [长选项列表] )
短选项名后的冒号(:)表示该选项必须有附加的参数。
长选项名后的等号(=)表示该选项必须有附加的参数。
返回opts和args。opts是一个参数选项及其value的元组( ( '-f', 'hello'), ( '-t', '' ), ( '--format', '' ), ( '--directory-prefix', '/home' ) )
args是一个除去有用参数外其他的命令行输入 ( 'a', 'b' )
然后遍历opts便可以获取所有的命令行选项及其对应参数了。
for opt, val in opts:
if opt in ( '-f', '--f_long' ):
pass
if ....
使用字典接受命令行的输入,然后再传送字典,可以使得命令行参数的接口更加健壮。
导入模块:import getopt
使用语法:getopt.getopt(args, options[, long_options])
参数说明:options是单字符,long_options表示字符串
返回结果:是一个list,每个list的项为(选项,值)的元组对
具体实例:#ping -c 12 -6 -s 1024 –help –size 1024
处理结果:
getopt.getopt(sys.argv[1:], ”c:s:6”, [“size=”,”help”])
[('-c', '12'), ('-6', ''), ('-s', '1024'), (“—help”,””), (“--size”,”1024”)]
c:表示是一个短选项,前面用’-‘表示,紧随着c之后的元素与c组成一个元组;
6:表示是一个短选项,前面用’-‘表示,与6组成元组的元素是空字符;
help:表示是一个长选项,前面用’--‘表示,与空字符组成一个元组;
size:表示是一个长选项,前面用’--‘表示,与1024组成一个元组;
两个来自python2.5 Documentation的例子:
>>> import getopt
>>> args = '-a -b -cfoo -d bar a1 a2'.split()
>>> args
['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2']
>>>optlist, args = getopt.getopt(args, 'abc:d:')>>> optlist[('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]>>> args['a1', 'a2']
>>> s = '--condition=foo --testing --output-file abc.def -x a1 a2'
>>> args = s.split()
>>> args
['--condition=foo', '--testing', '--output-file', 'abc.def', '-x', 'a1', 'a2']
>>> optlist, args = getopt.getopt(args, 'x', [
...'condition=', 'output-file=', 'testing'])
>>> optlist
[('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-x',
'')]
>>> args
['a1', 'a2']
python Documentation中也给出了getopt的典型使用方法:import getopt, sys
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
except getopt.GetoptError, err:
# print help information and exit:
print str(err) # will print something like "option -a not recognized"
usage()
sys.exit(2)
output = None
verbose = False
for o, a in opts:
if o == "-v":
verbose = True
elif o in ("-h", "--help"):
usage()
sys.exit()
elif o in ("-o", "--output"):
output = a
else:
assert False, "unhandled option"
# ...
if __name__ == "__main__":
main()
下面一段程序演示了在getopt下使用Usage()函数、参数字典(默认参数)、短选项、长选项等。
import os
import os.path
import sys
import getopt
def usage():
print '''
py price.py [option][value]...
-h or --help
-w or --wordattr-file="wordattr文件"
-s or --sflog-pricefile="sflog的价格变化文件"
-t or --tmpdir="临时文件的保存目录,默认为./"
-o or --outputfile="完整信息的保存文件,如果不指定,则输出到stdout"
-a or --wordattr-Complement="较新的wordattr去补全信息,缺省为Null,则丢失新广告的信息"
'''
return 0
if ( len( sys.argv ) == 1 ):
print '-h or --help for detail'
sys.exit(1)
shortargs = 'hw:s:t:o:a:'
longargs = ['help', 'wordattr=', 'sflog-pricefile=', 'tmpdir=', 'outputfile=', 'wordattr-Complement=']
opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs )
if args:
print '-h or --help for detail'
sys.exit(1)
paramdict = {'tmpdir':os.path.abspath(os.curdir), 'outputfile':sys.stdout, 'newwordattr':None }
for opt,val in opts:
if opt in ( '-h', '--help' ):
usage()
continue
if opt in ( '-w', '--wordattr' ):
paramdict['wordattr'] = val
continue
if opt in ( '-s', '--sflog-pricefile' ):
paramdict['pricefile'] = val
continue
if opt in ( '-t', '--tmpdir' ):
paramdict['tmpdir'] = val
continue
if opt in ( '-o', '--outputfile' ):
try:
paramdict['outputfile'] = open(val,'w')
except Exception,e:
#ul_log.write(ul_log.fatal,'%s,%s,@line=%d,@file=%s' \
#%(type(e),str(e),sys._getframe().f_lineno,sys._getframe().f_code.co_filename))
sys.exit(1)
continue
if opt in ( '-a', '--wordattr-Complement' ):
paramdict['newwordattr'] = val
continue
3). 使用optparser模块处理Unix模式的命令行选项:
optparser模块非常的强大,完全体现了python的“如此简单,如此强大”的特性。
import optparse
def getConfig(ini):
import ConfigParser
try:
cfg = ConfigParser.ConfigParser()
cfg.readfp(open(ini))
print cfg.sections()
except:
pass
if __name__=='__main__':
parser = optparse.OptionParser()
parser.add_option(
"-i",
"--ini",
dest="ini",
default="config.ini",
help="read config from INI file",
metavar="INI"
)
parser.add_option(
"-f",
"--file",
dest="filename",
help="write report to FILE",
metavar="FILE"
)
parser.add_option(
"-q",
"--quiet",
dest="verbose",
action="store_false",
default=True,
help="don't print status messages to stdout"
)
(options, args) = parser.parse_args()
getConfig(options.ini)
print args
python getopt.getopt,Python optparser 和getopt相关推荐
- Python命令行参数解析模块getopt使用实例
这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...
- Python 参数传入sys.argv和getopt.getopt()的用法
1.sys.argv Python中sys.argv是命令行参数从程序外部传值的的一种途径,它是一个列表,列表元素是我们想传进去的的新参数,所以可以用索引sys.argv[]来获得想要的值.因为一个写 ...
- python 模块 导入机制 模块搜索 Python包 发布python模块或程序
python 模块 python模块:以.py结尾的代码文件. 顶层文件: 程序执行入口 模块文件1 模块文件2 模块文件3 在python中一 ...
- python基础语法--python语言及其应用
python基础语法 python引言 python python语言是一种高级动态.完全面向对象的语言. python中函数.模块.数字.字符串都是对象. python完全支持继承.重载.派生.多继 ...
- Python培训:Python有哪些函数?你了解几种?
本期小编要为大家带来的Python教程就是关于Python函数这方面的,我们都知道Python函数,一般是指组织好的.可重复使用的.用来实现单一或相关联功能的代码段,Python函数包含系统中自带的一 ...
- python新手任务:python循环嵌套
2019独角兽企业重金招聘Python工程师标准>>> Python 循环嵌套 Python 语言允许在一个循环体里面嵌入另一个循环. Python for 循环嵌套语法: Pyth ...
- Python入门 Python自学路线 Python如何学习
本文介绍Python入门 Python自学路线 Python如何学习.先说点题外话吧:首先呢,我刚开始接触编程的时候,学的是C,那时候Python还没有这么火,后来学了C++,PHP,Java,前端. ...
- 黑客都用Python?学习Python的4个理由!
2019独角兽企业重金招聘Python工程师标准>>> Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 重点是,Python 是一种对初学者非常友好的 ...
- python 3 最佳python中文书籍下载
筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. 尽量只收集通用的书籍,专用的书籍只收集特别优秀者. python专业书籍汇总 Python基础教程(第3版) - 2017.pdf 图 ...
最新文章
- Android-如何开发一个功能强大的图片选择器
- 完成AOP 顶层设计-AopProxy
- Puppet 的部署与应用,看这一篇就够了
- CRM Fiori Launchpad初次登陆后返回的service metadata信息
- 在cygwin下编译c语言
- 大事件后台管理系统开发实战(下)
- Unity VR开发出语音识别功能
- vim编辑python_Python3基础知识——Vi/Vim编辑器的使用,大神们都在用的
- 推荐5款好用的Java软件,初学者必看
- 金山词霸2003/2005/2006词典丢失的解决方法
- 1024,身为程序员的我们更应该思考如何放慢脚步
- webpack-theme-color-replacer自定义element-ui主题
- SylixOS中的中断接口基础实现
- linux装百度网盘不能运行,在Deepin系统中安装百度网盘的两种方法
- ssm+Vue计算机毕业设计学科竞赛管理(程序+LW文档)
- 复制粘贴Excel文件后,显示“安全警告 宏已被禁用”,复制后得到的文件看不到内容
- 解决Error:All flavors must now belong to a named flavor dimension.
- [OpenVas/Gvm]Failed to find config ‘085569ce-73ed-11df-83c3-002264764cea‘
- 渗透工程师测试的流程步骤
- 显卡性能测试工具BenchMarkTool
热门文章
- iperf2简单使用介绍
- QT_QPalette、背景颜色
- Ubuntu22.04.1 LTS离线编译安装Nginx
- 淘宝购物车页面 智能搜索框Ajax异步加载数据
- dataV+vue 免费大屏模板
- AI 对抗超级细菌:麦克马斯特大学利用深度学习发现新型抗生素 abaucin
- 用人工智能寻找抗衰老技术,“长生不老”究竟是不是伪科学?
- axios系列之使用 application/x-www-form-urlencoded format
- Idap安装以及建立组织
- 将VUE项目部署到服务器 nginx代理配置