python 之 分割参数getopt

os下有个方法walk,非常的好用,用来生成一个generator。每次可以得到一个三元tupple,其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。

1. 导入getopt, sys 模块

2. 分析命令行参数

3. 处理结果

第一步很简单,只需要:

import getopt, sys

第二步处理方法如下(以Python 手册上的例子为例):

try:

opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])

except getopt.GetoptError:

# print help information and exit:

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'

在分析完成后,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

使用一个循环,每次从opts 中取出一个两元组,赋给两个变量。o 保存选项参数,a 为附加参数。接着对取出的选项参数进行处理。(例子也采用手册的例子)

实践篇:

#!/usr/bin/env python

import sys;

import getopt;

def usage():

print("Usage:%s [-a|-o|-c] [--help|--output] args...." %Dsys.argv[0]);

if "__main__" == __name__:

#lsArgs = [""];

try:

opts,args = getopt.getopt(sys.argv[1:], "ao:c", ["help", "output="]);

print("============ opts ==================");

print(opts);

print("============ args ==================");

print(args);

#check all param

for opt,arg in opts:

if opt in ("-h", "--help"):

usage();

sys.exit(1);

elif opt in ("-t", "--test"):

print("for test option");

else:

print("%s ==> %s" %(opt, arg));

except getopt.GetoptError:

print("getopt error!");

usage();

sys.exit(1);

运行结果:

$ ./test_getopt.py  -a -oaaa -caa --output=out file1 t file2 -d

============ opts ==================

[('-a', ''), ('-o', 'aaa'), ('-c', ''), ('-a', ''), ('-a', ''), ('--output', 'out')]

============ args ==================

['file1', 't', 'file2', '-d']

-a  ==>

-o  ==> aaa

-c  ==>

-a  ==>

-a  ==>

--output  ==> out

分享到:

2010-12-17 11:02

浏览 50479

评论

1 楼

mimicom

2012-08-10

天..终于看懂了... 楼主这个通俗还算易懂吧.....

奇怪为何我总是看不懂文档...那种标准官方的文档不说英文,光是格式就晕了...

通俗易懂的文档少....

python getopt_python 之 分割参数getopt相关推荐

  1. python 之 分割参数getopt

    FROM:http://andylin02.iteye.com/blog/845355 python 之 分割参数getopt os下有个方法walk,非常的好用,用来生成一个generator.每次 ...

  2. python 命令-python解析命令行参数的三种方法详解

    这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...

  3. python 命令行参数-Python 获得命令行参数的方法(推荐)

    本篇将介绍python中sys, getopt模块处理命令行参数 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数: ...

  4. Python中函数的参数传递方式

    Python中函数的参数传递方式 .普通的参数传递 >>> def add(a,b):return a+b >>> print add(1,2) 3 >> ...

  5. python命令行输入参数_Python命令行参数处理

    sys模块 sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息,其中 sys.argv 可以获取命令行参数 在Python交互式解释器中可以先导入sys模块 import ...

  6. [转载] python实现语义分割_使用Keras实现深度学习中的一些语义分割模型

    参考链接: Keras中的深度学习-数据预处理 Keras-Sematic-Segmentation 使用Keras实现深度学习中的一些语义分割模型. 配置 tensorflow 1.13.1+ten ...

  7. python中匹配函数_正则表达式以匹配函数名和Python中的所有参数

    假设我有一个字符串,如下所示:"func(arg1, arg2, arg3, arg4, ..., argn)" 编辑:此函数不是用某种特定语言编写的.它只有这种格式.如果这样做更 ...

  8. python人像精细分割_python 使用OpenCV进行简单的人像分割与合成

    实现思路 通过背景建模的方法,对源图像中的动态人物前景进行分割,再将目标图像作为背景,进行合成操作,获得一个可用的合成影像. 实现步骤如下. 使用BackgroundSubtractorMOG2进行背 ...

  9. python命令之m参数 局域网传输

    在命令行中使用python时,python支持在其后面添加可选参数. python命令的可选参数有很多,例如:使用可选参数h可以查询python的帮助信息: 可选参数m 下面我们来说说python命令 ...

最新文章

  1. UC 伯克利华人一作:卷积让视觉 Transformer 性能更强,ImageNet 继续刷点!
  2. 也说科研的兴趣与自信
  3. php1为true,php有一个预定义的常量true,值为整数1,这该如何理解?
  4. python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践
  5. 电脑小常识:电脑键盘失灵怎么办?
  6. mvc 事务层切换数据源_Mvc 与 Flux 与 Redux的一些思考
  7. SQLLite数据库操作
  8. Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)
  9. 我就是这样顺利拿到腾讯和微软的offer,
  10. python3d旋转相册,用HTML+CSS代码制作3D旋转相册
  11. ENVI5.3处理高分五号影像数据
  12. 苹果计算机磁盘格式,Mac怎么将ntfs格式的磁盘格式化
  13. 干货 | 携程Elasticsearch数据同步实践
  14. console接口跟Telnet命令初步调试交换机
  15. 关于微信公众号生成二维码如何保存到相册
  16. 华为在HDC2021发布全新HMS Core 6 宣布跨OS能力开放
  17. MySql8.0windows无法启动服务解决方案can‘t creat test file
  18. 淘宝网热浪引擎平台资费规则
  19. 2021湖南省地区高考成绩排名查询,湖南高考排名查询方法 2020年湖南高考成绩位次全省排名查询...
  20. PSIM中的光伏阵列使用(solar module)

热门文章

  1. 使用预编译库PREBUILT LIBRARY官方说明
  2. 2013dgtcs 数对
  3. vue rem移动端适配
  4. 个人从源码理解JIT模式下angular编译AppModule的过程
  5. SQL 之连接查询
  6. CVE-2012-1876漏洞分析
  7. 编写可维护的javascript代码---开篇(介绍自动报错的插件)
  8. ORACLE SQL调优案例一则
  9. SCRUM 系列之一 ----- 认识SRCUM
  10. 一些值得借鉴的处事、励志语句