本文是从我另一个博客转载过来的,欢迎大家点击进去看一下,帮我增加点人气^_^
选择模块
根据python参考手册的提示,optparse 已经废弃,应使用 argparse
教程
概念
argparse 模块使用 add_argument 来添加可选的命令行参数,原型如下:
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest]) Define how a single command-line argument should be parsed. Each parameter has its own more detailed description below, but in short they are: name or flags - Either a name or a list of option strings, e.g. foo or -f, --foo. action - The basic type of action to be taken when this argument is encountered at the command line. nargs - The number of command-line arguments that should be consumed. const - A constant value required by some action and nargs selections. default - The value produced if the argument is absent from the command line. type - The type to which the command-line argument should be converted. choices - A container of the allowable values for the argument. required - Whether or not the command-line option may be omitted (optionals only). help - A brief description of what the argument does. metavar - A name for the argument in usage messages. dest - The name of the attribute to be added to the object returned by parse_args().
上面的说明其实不用看,直接看示例好了:
仅仅想展示一些信息
# -*- coding: utf-8 -*- """ argparse tester """ import argparse parser = argparse.ArgumentParser(description='argparse tester') parser.add_argument("-v", "--verbose", help="increase output verbosity", action="store_true") args = parser.parse_args() if args.verbose: print "hello world"
它会输出如下:
$ python t.py $ python t.py -v hello world $ python t.py -h usage: t.py [-h] [-v] argparse tester optional arguments: -h, --help show this help message and exit -v, --verbose increase output verbosity
这里 -v 是这个选项的简写,--verbose 是完整拼法,都是可以的
help 是帮助信息,不解释了
args = parse_args() 会返回一个命名空间,只要你添加了一个可选项,比如 verbose,它就会把 verbose 加到 args 里去,就可以直接通过 args.verbose 访问。
如果你想给它起个别名,就需要在 add_argument 里加多一个参数 dest='vb'
这样你就可以通过 args.vb 来访问它了。
action="store_true" 表示该选项不需要接收参数,直接设定 args.verbose = True,
当然如果你不指定 -v,那么 args.verbose 就是 False
但如果你把 action="store_true" 去掉,你就必须给 -v 指定一个值,比如 -v 1
做个求和程序
# -*- coding: utf-8 -*- """ argparse tester """ import argparse parser = argparse.ArgumentParser(description='argparse tester') parser.add_argument("-v", "--verbose", help="increase output verbosity", action="store_true") parser.add_argument('numbers', type=int, help="numbers to calculate", nargs='+') parser.add_argument('-s', '--sum', help="sum all numbers", action='store_true', default=True) args = parser.parse_args() print "Input:", args.numbers print "Result:" results = args.numbers if args.verbose: print "hello world" if args.sum: results = sum(args.numbers) print "tSum:tt%s" % results
输出如下:
[pan@pan-pc test]$ python t2.py -h usage: t2.py [-h] [-v] [-s] numbers [numbers ...] argparse tester positional arguments: numbers numbers to calculate optional arguments: -h, --help show this help message and exit -v, --verbose increase output verbosity -s, --sum sum all numbers [pan@pan-pc test]$ python t2.py 1 2 3 -s Input: [1, 2, 3] Result: Sum: 6
注意到这此可选项 numbers 不再加上 “-” 前缀了,因为这个是位置选项
如果把 nargs="+" 去掉,则只能输入一个数字。因为它指定了number 选项的值个数
如果把 type=int 去掉,则 args.numbers 就是一个字符串,而不会自动转换为整数
注意到 --sum 选项的最后还加上了 default=True,意思是即使你不在命令行中指定 -s,它也会默认被设置为 True
只能2选1的可选项
# -*- coding: utf-8 -*- """ argparse tester """ import argparse parser = argparse.ArgumentParser(description='argparse tester') #group = parser.add_mutually_exclusive_group() parser.add_argument("-v", "--verbose", help="increase output verbosity", action="store_true") parser.add_argument('numbers', type=int, help="numbers to calculate", nargs='+') parser.add_argument('-s', '--sum', help="sum all numbers", action='store_true', default=True) parser.add_argument('-f', '--format', choices=['int', 'float'], help='choose result format', default='int') args = parser.parse_args() print "Input:", args.numbers print "Result:" results = args.numbers if args.verbose: print "hello world" if args.format == 'int': format = '%d' else: format = '%f' if args.sum: results = sum(args.numbers) print 'tsum:tt%s' % (format % results)
输出如下:
[pan@pan-pc test]$ python t2.py 1 2 3 -f float Input: [1, 2, 3] Result: sum: 6.000000 [pan@pan-pc test]$ python t2.py 1 2 3 -f double usage: t2.py [-h] [-v] [-s] [-f {int,float}] numbers [numbers ...] t2.py: error: argument -f/--format: invalid choice: 'double' (choose from 'int', 'float')
在添加选项 -f 时,传入了 choices=['int', 'float'] 参数,表示该选项只能从 int 或 float 中2选1
相关推荐
### Python命令行参数详解 在Python编程中,处理命令行参数是常见的需求,尤其是在脚本编写和工具开发中。Python提供了多种内置模块来处理这一需求,其中`getopt`和`optparse`是最为广泛使用的两种。然而,在...
Commando 灵感来自于 Python 的 optparse 模块 以及 JewelCli Java 库,是一个用来定义以及解析 命令行参数的Python工具包。 标签:Commando
创建 test.py 文件,代码如下: #!/usr/bin/python # -*- coding: gbk -*- import sys print sys.argv if __name__=='__main__': print Program name, sys.argv[0] ... 您可能感兴趣的文章:Python命令行参数解析
本文主要针对Python命令行参数解析模块getopt进行详细介绍,并通过实例演示其使用方法,包含短选项参数解析实例、长选项参数解析实例,以及长短选项结合解析实例。 getopt模块是Python标准库中用于处理命令行参数的...
Python 命令行解析模块 argparse 是 Python 标准库中推荐的命令行解析模块,用于解析命令行参数。argparse 模块提供了一个强大且灵活的方式来解析命令行参数。 基本概念 argparse 模块的核心概念是 ArgumentParser...
主要介绍了Python命令行参数解析模块optparse使用实例,本文讲解了增加选项(add_option())、行为(action)、设置默认值(default)、生成帮助提示(help)、设置boolean值、错误处理、选项组(Grouping Options)等内容,需要...
本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考。 具体代码如下: from optparse import OptionParser parser = OptionParser(usage="usage:%prog [optinos] filepath") parser....
Python命令行解析是Python编程语言中的一个核心特性,它允许开发者在命令行界面直接执行Python脚本,极大地提升了开发和调试的效率。Python的命令行解析功能使得在没有图形用户界面的情况下,程序员能够通过简单的...
Python编程语言在开发过程中,对于命令行参数的解析是一个常见的需求。传统的解析方式往往需要编写大量的样板代码,容易出错且不够灵活。幸运的是,有一些优秀的库可以帮助开发者快速、简便地实现命令行参数的解析,...
经典的python命令行解析样例代码,如果要开发带命令行参数的python工具,这可以作为一个很好的开端
这些脚本可能展示了如何解析和处理不同类型的参数,例如使用`argparse`模块,这是Python标准库中一个强大的命令行参数解析工具。 `argparse`模块使我们能够定义命令行选项、开关和子命令,并提供自动帮助和错误消息...
python的pytest框架之命令行参数详解(上)python获取命令行输入参数列表的实例代码Python 获得命令行参数的方法(推荐)Python解析命令行读取参数–argparse模块使用方法Python中的命令行参数解析工具之docop
这个模块可以帮助脚本解析命令行参数,一般是sys.argv[1:]。它遵循着Unix的getopt()函数相同的约定(用-/–指定命令参数)。这个模块提供两个函数(getopt.getopt()/getopt.gnu_getopt())和一个参数异常(getopt....
在Python编程中,解析命令行参数是经常遇到的需求,它使得我们可以在运行程序时动态地传递参数,增强程序的灵活性。本文将详细讲解Python解析命令行参数的三种常见方法:sys.argv、argparse模块和getopt模块。 1. *...
Python 本身就提供了三个命令行参数解析模块,我这里罗列一下它们的大致情况供你了解。 getopt,只能简单的处理命令行参数 optparse,功能强大,易于使用,可以方便地生成标准的、符合Unix/Posix 规范的命令行说明...
Python命令行参数是编程中一个重要的概念,它允许我们在运行Python脚本时传递额外的配置或指令。在Python中,处理命令行参数的一种常见方法是使用`optparse`模块,这个模块提供了方便的方式来定义和解析命令行选项。...