在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项和长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词。长格式是在Linux下引入的。许多Linux程序都支持这两种格式。在Python中提供了getopt模块很好的实现了对这两种用法的支持,而且使用简单。
取得命令行参数
在使用之前,首先要取得命令行参数。使用sys模块可以得到命令行参数。
import sys
print sys.argv
然后在命令行下敲入任意的参数,如:
python get.py -o t --help cmd file1 file2
结果为:
['get.py', '-o', 't', '--help', 'cmd', 'file1', 'file2']
可见,所有命令行参数以空格为分隔符,都保存在了sys.argv列表中。其中第1个为脚本的文件名。
选项的写法要求
对于短格式,"-"号后面要紧跟一个选项字母。如果还有此选项的附加参数,可以用空格分开,也可以不分开。长度任意,可以用引号。如以下是正确的:
-o
-oa
-obbbb
-o bbbb
-o "a b"
对于长格式,"--"号后面要跟一个单词。如果还有些选项的附加参数,后面要紧跟"=",再加上参数。"="号前后不能有空格。如以下是正确的:
--help=file1
而这些是不正确的:
-- help=file1
--help =file1
--help = file1
--help= file1
如何用getopt进行分析
使用getopt模块分析命令行参数大体上分为三个步骤:
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为附加参数。接着对取出的选项参数进行处理。(例子也采用手册的例子)
分享到:
相关推荐
函数原型: getopt.getopt(args, shortopts, longopts=[]) 参数解释: args:args为需要解析的参数列表。一般使用sys.argv[1:],这样可以过滤掉第一个参数(ps...在Android生成OTA的build系统中,common.py文件中的P
总之,`getopt`模块是Python中处理命令行参数的强大工具,它简化了对短参数和长参数的解析。`getopt.getopt()`函数能够解析带或不带参数的选项,并且`args`变量可以捕获所有未被解析的额外参数。熟练掌握`getopt`...
getopt模块是Python标准库中用于处理命令行参数的一个模块,它是对Unix C语言库函数getopt的模仿,旨在提供一种方便的命令行参数解析机制。使用getopt模块可以使得Python脚本能够接受和处理命令行输入的参数,进而...
在Python中,`getopt`模块主要用于解析命令行参数。这对于编写能够接受命令行参数的脚本非常有用,例如设置脚本的工作目录、指定日志级别等。本文将详细介绍`getopt`模块的使用方法,并通过具体的例子来帮助理解。 ...
标题中的"Python-Python实现的Google命令行标志模块"指的是Google GFlags库在Python中的实现。GFlags是一个广泛使用的开源库,它允许开发者为他们的应用程序定义命令行参数或"标志",使得用户能够自定义程序的行为。...
下面我通过新建一个test.py的脚本解释下这个模块的的使用 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import getopt if __name__=='__main__': print sys.argv opts, args = getopt.getopt(sys.argv...
在Python中,getopt模块是用于解析命令行选项、参数和短语的标准工具,而在Crystal-getopt中,它被移植并适应了Crystal的语法和编程习惯。 在解释水晶-getopt之前,我们先理解一下命令行参数的概念。命令行参数是在...
- `getopt()`函数在C语言中被广泛使用,它会遍历命令行参数,处理短选项(单字符选项)。格式通常是`-c option`。 - 函数原型:`int getopt(int argc, char *const argv[], const char *optstring);` - `argc`和`...
本文实例讲述了python采用getopt解析命令行输入参数的方法,分享给大家供大家参考。 具体实例代码如下: import getopt import sys config = { "input":"", "output":".", } #getopt三个选项,第一个一般为sys...
`argparse`是Python中最强大、最易用的命令行参数解析模块。它不仅可以解析命令行参数,还可以自动生成帮助信息和错误提示信息,非常适合开发用户友好的命令行接口。 **基本使用**: ```python import argparse def...
例如,在Python中,代码块的开始和结束由缩进来标识,而不是像其他语言中的花括号。此外,Python支持多种类型的引号来定义字符串,注释以“#”号开头。 6. Python中的变量和数据类型: 尽管这部分内容在提供的文档...
在压缩包文件`bash_opts-master`中,可能包含了示例代码和教程,教你如何在Python中使用Bash来编写命令行工具。这些资源可能包括了如何设置Bash选项,如何与Python脚本交互,以及如何优化命令行输出的示例。通过学习...
17.7 在C代码中使用Python 对象 342 17.8 本章小结 345 17.9 习题 346 第18章 数值编程 347 18.1 Python语言中的数值 347 18.1.1 整数 348 18.1.2 长整数 348 18.1.3 浮点数 349 18.1.4 格式化数值 350 18.1.5 作为...
opts, args = getopt.getopt(sys.argv[1:], “t:s:h”, [“walletype=”, “servicename=”,’help’]) for a,o in opts: if a in (‘-t’, ‘–walletype’): walle_type = o elif a in (‘-s’, ‘–servicename’...
此外,还需掌握Python中的字符串引用、注释、空行使用、等待用户输入以及如何在命令行中传递和解析参数。在使用命令行参数时,通常需要了解如何访问和解析这些参数,使用getopt模块的方法进行更高级的参数解析。 ...