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

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

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

 先引入一个例子:

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

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

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

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

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

返回两个参数optlist,args

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

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

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

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

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

python文档中给出使用方法:

#!/usr/bin/env python26
#-*- coding:utf-8 -*- import getopt
import sys
def usage():
help_msg = '''Usage:./test_opt.y [option] [value]...
-h --help show help
-o --output output file
-v verbose''' print help_msg def main():
if len(sys.argv) == 1:
usage()
sys.exit()
try:
opts,args = getopt.getopt(sys.argv[1:],'ho:v',["help","output="])
except getopt.GetoptError as err:
print str(err)
sys.exit(2)
except Exception,e:
print e output = None
verbose = False for opt,arg in opts:
if opt == "-v":
verbose = True
elif opt in ("-h","--help"):
usage()
sys.exit()
elif opt in ("-o","--output"):
output = arg
else:
assert False,"unhandled option"
if __name__ == "__main__":
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. redis的发布订阅模式pubsub

    前言 redis支持发布订阅模式,在这个实现中,发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端),而是将信息发送给频道(channel),然后由频道将信息转发给所有对这个 ...

  2. 从template到DOM(Vue.js源码角度看内部运行机制)

    写在前面 这篇文章算是对最近写的一系列Vue.js源码的文章(https://github.com/answershuto/learnVue)的总结吧,在阅读源码的过程中也确实受益匪浅,希望自己的这些 ...

  3. 创建mongodb副本集操作实例

    一:概念 相关概念及图片引用自这里 mongodb副本集: 副本集是一组服务器,其中一个是主服务器,用于处理客户请求:还有多个备份服务器,用于保存主服务器的数据副本.如果主服务器崩溃了,备份服务器自动 ...

  4. 【转载】CSS direction属性简介与实际应用

    文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/wordpress/ 原文链接:http://www.zhangxinxu.com/wordpress/?p=5 ...

  5. Java—Day5课堂练习

    package com.lovo.classes;import java.util.Scanner;public class day5Test {    public static void main ...

  6. sublime Text 正则替换

    我遇到一个文章,需要把所有的 (数字) 换为 [数字] 于是我使用 Sublime Text的替换 首先,我们需要打开正则使用"Alt+R" 或打开"Ctrl+h&quo ...

  7. sharepoint 创建个人网站

    One of the SharePoint 2013 puzzle pieces which got some major improvements are My Sites, User Profil ...

  8. JAVA基础-XML的解析

    一.XML的概述 XML的全名为可扩展标记语言(Extensible Markup Language),XML的作用为:1.传输,2.存取数据,3.软件的配置文件.传输现在都用更轻量的Json,而存储 ...

  9. 微信小程序获取微信的openid

    通过登录接口获取登录凭证,然后通过request请求后台获取openid,需要把后台域名放到小程序后台的request 合法域名内: 1.wx.login  获取登录凭证 2.wx.request 发 ...

  10. 深度学习系列 Part (2)

    1. 神经网络原理 神经网络模型,是上一章节提到的典型的监督学习问题,即我们有一组输入以及对应的目标输出,求最优模型.通过最优模型,当我们有新的输入时,可以得到一个近似真实的预测输出. 我们先看一下如 ...