1、getopt——C风格命令行解析

http://docs.python.org/2.7/library/getopt.html#module-getopt

  1. getopt.getopt(args, options[, long_options])

 先引入一个例子:

  1. >>> import getopt
  2. >>>
  3. >>> args = "-a -b -cfoo -d bar a1 a2".split() #将输入的参数转换成一个列表,通常在实例应用中args = sys.argv[1:]
  4. >>> args
  5. ['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2']
  6. >>> optlist,args = getopt.getopt(args,'abc:d:') #abc:d:,说明a和b只是是否有该选项,但是后面不跟值,而c和d不同,后面是有值的,故以冒号(:)区分
  7. >>>
  8. >>> optlist #获取到参数以及对应的值
  9. [('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]
  10. >>> args #-d后续只跟一个值,故a1和a2当做参数
  11. ['a1', 'a2']

上面的例子是短选项模式,下面再举个长选项模式的例子:

  1. >>> import getopt
  2. >>>
  3. >>> s = "--condition=foo --testing --output-file abc.def -a foo -x a1 a2" #长选项和短选项结合,-x和-a是短选项,其他都是长选项
  4. >>>
  5. >>> args = s.split()
  6. >>>
  7. >>> args
  8. ['--condition=foo', '--testing', '--output-file', 'abc.def', '-a', 'foo', '-x', 'a1', 'a2']
  9. >>>
  10. >>> optlist,args = getopt.getopt(args,'x','a',['condition=','output-file=','testing'])
  11. Traceback (most recent call last):
  12. File "<stdin>", line 1, in <module>
  13. TypeError: getopt() takes at most 3 arguments (4 given)
  14. >>>
  15. >>> optlist,args = getopt.getopt(args,'xa:',['condition=','output-file=','testing']) #getopt.getopt()函数接受三个参数,第一个是所有参数输入,第二个是短选项,第三个是长选项
  16. >>>
  17. >>> optlist
  18. [('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-a', 'foo'), ('-x', '')]
  19. >>> args
  20. ['a1', 'a2']

getopt模块用于抽出命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式和长选项模式。

getopt函数的格式是getopt.getopt ( [命令行参数列表], "短选项", [长选项列表] )

返回两个参数optlist,args

optlist是一个参数以及对应的vaule构成的元组

args是除了参数外其他的命令输入

然后遍历optlist便可以获取所有的命令行以及对应参数:

  1. >>> for opt,val in optlist:
  2. ... if opt in ('-a','--a_long'):
  3. ... pass
  4. ... if opt in (xxx)

使用字典接受命令行的输入,然后再传送字典,可以使得命令行参数的接口更加健壮。

python文档中给出使用方法:

  1. #!/usr/bin/env python26
  2. #-*- coding:utf-8 -*-
  3.  
  4. import getopt
  5. import sys
  6. def usage():
  7. help_msg = '''Usage:./test_opt.y [option] [value]...
  8. -h --help show help
  9. -o --output output file
  10. -v verbose'''
  11.  
  12. print help_msg
  13.  
  14. def main():
  15. if len(sys.argv) == 1:
  16. usage()
  17. sys.exit()
  18. try:
  19. opts,args = getopt.getopt(sys.argv[1:],'ho:v',["help","output="])
  20. except getopt.GetoptError as err:
  21. print str(err)
  22. sys.exit(2)
  23. except Exception,e:
  24. print e
  25.  
  26. output = None
  27. verbose = False
  28.  
  29. for opt,arg in opts:
  30. if opt == "-v":
  31. verbose = True
  32. elif opt in ("-h","--help"):
  33. usage()
  34. sys.exit()
  35. elif opt in ("-o","--output"):
  36. output = arg
  37. else:
  38. assert False,"unhandled option"
  39. if __name__ == "__main__":
  40. main()

2、argparse——python2.7中新添加的

http://docs.python.org/2.7/library/argparse.html#module-argparse

http://www.cnblogs.com/lovemo1314/archive/2012/10/16/2725589.html

Python之getopt模块的更多相关文章

  1. python通过getopt模块获取执行命令参数

    python脚本和shell脚本一样可以获取命令行的参数,根据不同的参数,执行不同的逻辑处理. 通常我们可以通过getopt模块获得不同的执行命令和参数. 下面我通过新建一个test.py的脚本解释下 ...

  2. python getopt模块使用方法

    python中 getopt 模块,是专门用来处理命令行参数的 getop标准格式: 函数getopt(args, shortopts, longopts = []) shortopts 是短参数   ...

  3. 【转】getopt模块,实现获取命令行参数

    python中 getopt 模块,该模块是专门用来处理命令行参数的 函数getopt(args, shortopts, longopts = []) 参数args一般是sys.argv[1:],sh ...

  4. (转载)python: getopt的使用;

    注: 该文转载于https://blog.csdn.net/tianzhu123/article/details/7655499python中 getopt 模块, 该模块是专门用来处理命令行参数的 ...

  5. [转]Python 命令行参数和getopt模块详解

    FROM : http://www.tuicool.com/articles/jaqQvq 有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Pyt ...

  6. Python 命令行参数和getopt模块详解

    有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的).在C语言里,m ...

  7. Python getopt 模块

    Python getopt 模块 getopt模块,是配合sys.argv使用的一个扩展.他可以接收终端的参数.格式扩展为“-n” 或 “--n”两种类型,下面是具体解释. 使用 improt get ...

  8. Python 中的 getopt 模块

    sys 模块:可以得到用户在命令行输入的参数 getopt模块:专门用来处理输入的命令行参数 用户在命令行中输入参数,sys模块得到该参数,getopt模块处理该参数 sys模块: import sy ...

  9. python获取命令行传参的两种种常用方法argparse解析getopt 模块解析

    方法一:argparse解析 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # @Time: 2020/5/20 10:38 # @Author:zhan ...

随机推荐

  1. 使用HTML DOM 来分配事件 —— onmouseover和onmouseout ,onmousedown和onmouseup

    一, onmouseover 和 onmouseout 事件 onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数. 一个小例:鼠标未在 ...

  2. 系统装机硬盘格式 >> GPT或者UEFI

    预装Win8系统的电脑,硬盘都是采用这种分区格式,因为出厂安装时,是以Uefi方式启动安装的. 简单的办法,仍安装Win8系统:或者是转换磁盘分区格式为MBR,不用任何软件就可实现,需要重建分区表,会 ...

  3. Tomcat 笔记-设置虚拟主机

    通过作用虚拟主机,可以使多个不同域名的网站共存于一个Tomcat中 在tomcat的server.xml文件中添加主机名: <Host name="hostname" app ...

  4. quartz 定时任务

    面试问到了,回答的不是很全面,丢人呀.研究过,用过的东西. 2年多没用,回忆一下: Quartz任务调度框架和Spring集成使用:定时执行一些任务 核心:调度器.任务和触发器. 调度器负责调度各个任 ...

  5. 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  6. 微信小程序用setData修改数组或对象中的一个属性值

    在page中有如下数组 data: { info:[ { name:"yuki", tou:"../img/head.jpg", zGong:130, gMon ...

  7. jquery的遍历选择器-随机整理下

    我从w3c上截了一张图,如图所示: 下面我们来详细说一说.这些选择器. 1.add() 方法将元素添加到匹配元素的集合中.例子: .add(selector) $("div").a ...

  8. 基于Spring、SpringMVC、MyBatis、Druid、Shrio构建web系统

    源码下载地址:https://github.com/shuaijunlan/Autumn-Framework 在线Demo:http://autumn.shuaijunlan.cn 项目介绍 Autu ...

  9. Line belt

    Problem Description In a two-dimensional plane there are two line belts, there are two segments AB a ...

  10. Python-week1,第一周(基于Python3.0以上)

    1,变量 准确来说不是第一周学习了吧,应该是采用博客记录学习的第一周,记录并做个笔记吧,可能做的不好,但我高兴啊,废话不说了,上图. 学习过程中做的一些笔记,当然能面面俱到,只能在写博客的时候又能复习 ...