python模块学习---getopt(命令行参数处理)
来源:互联网 发布:明道 软件 离线 编辑:程序博客网 时间:2024/05/16 07:33
在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的)。在C语言里,main函数的原型为int main(int argc, char **argv),这里主要指linux平台, argc指的是命令行传入的参数个数(程序的name为第一个参数),而argv则是一个指针数组,每一个元素为指向一个命令行参数的指针。在Python里的命令行参数是存储在sys.argv里,argv是一个列表,第一个元素也为程序名称。
一、sys.argv
sys.argv为python的命令行参数列表,sys.argv[0]保存脚本的文件名,从参数1开始,sys.argv保存的是命令行的其他参数,len(sys.argv)为包括脚本文件名在内的命令行参数的个数。
例如:
import sys print sys.argv[0] ##脚本名 print sys.argv[1] ## 第一个参数print sys.argv ###参数数组 print len(sys.argv) ##参数个数 for i in range(1, len(sys.argv)): print "参数", i, sys.argv[i]
>>>python argv.py hello world
argv.py
['argv.py', 'hello', 'world']
3
参数 1 hello
参数 2 world
['argv.py', 'hello', 'world']
3
参数 1 hello
参数 2 world
二、getopt.getopt函数()
getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式(-)和长选项模式(--)。模块里面的提供了2个函数和一个类,主要使用getopt函数,先看下函数原型:def getopt(args, shortopts, longopts = [ ])
我们先看一个实例以方便理解:
try: opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="]) except getopt.GetoptError: # print help information and exit: for name, value in opts: print name, value for item in args: print item
说明如下:
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 是一个两元组的列表。每个元素为:( 选项串, 附加参数) 。如果没有附加参数则为空串'' 。
6. 整个过程使用异常来包含,这样当分析出错时,就可以打印出使用信息来通知用户如何使用这个程序。
如果输入的命令行参数为:'-h -o file --help --output=out file1 file2'则输出为:
-h
-o file
--help
--output out
file1
file2
-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"): output = a
最后再给出两个实例(参数列表中长选项模式可以不带=号)
第一个
>>> 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']
0 0
- python模块学习---getopt(命令行参数处理)
- python模块学习---getopt(命令行参数处理)
- Python:使用getopt模块处理命令行参数
- python中 命令行参数处理 --getopt 模块
- Python 命令行参数和getopt模块详解
- Python解析命令行参数模块getopt
- Python 命令行参数和getopt模块详解
- python中处理命令行参数命令getopt
- getopt处理命令行参数
- Python 有两个内建的模块(getopt,optparse)用于处理命令行参数
- perl使用Getopt::Long模块,处理命令行参数
- 用getopt处理命令行参数
- 用getopt处理命令行参数
- LINUX getopt处理命令行参数
- getopt函数:处理命令行参数
- getopt:命令行选项、参数处理
- LINUX getopt处理命令行参数
- 用getopt处理命令行参数
- MetaModel介绍
- 中国4G手机市场苹果失老大地位 酷派登顶
- NGUI所见即所得-UIAtlasMaker,UIAtlas
- Flex4 的 TitleWindow创建
- 使用SVN提示“工作副本已经锁定”的解决办法
- python模块学习---getopt(命令行参数处理)
- Linux下已编译PHP增加扩展so的方法,关键phpize 和config.m4
- 树JAVA
- 约瑟夫问题 C语言代码
- 【转】MySQL函数总结
- 语音识别的个人小总结
- 平时笔记&总结
- 反向代理服务器原理及搭建,开放的反向代理服务软件应用nginx和nat123的使用
- Flex4 两页面间的传值问题总结