python命令行参数
2015-08-07 11:07
477 查看
〇、python中对应的argc, argv
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[2]
一、getopt
opts,args = getopt.getopt ( [命令行参数列表], "短选项", [长选项列表] ) ,第三个参数可省略
短选项名后的冒号(:)表示该选项必须有附加的参数。如果没有:,-abc等价于-a -b -c;如果a有:,-abc等价于-a bc。
长选项名后的等号(=)表示该选项必须有附加的参数。
返回opts和args。
opts是一个参数选项及其value的元组[('-o', 'value'),('--option',''),...],opts可有重复项
args是一个除去有用参数外其他的命令行输入 [ 'a1', 'a2',... ]
二、argparse
参数输入错误时,自动生成help。
互斥参数选项
不定数量参数
parser.parse_args(['--sum', '7', '-1', '42'])
也可直接加参数
三、optparse
2.7开始废弃
四、docopt
非标准库,根据文档生成
try.docopt.org
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[2]
一、getopt
opts,args = getopt.getopt ( [命令行参数列表], "短选项", [长选项列表] ) ,第三个参数可省略
短选项名后的冒号(:)表示该选项必须有附加的参数。如果没有:,-abc等价于-a -b -c;如果a有:,-abc等价于-a bc。
长选项名后的等号(=)表示该选项必须有附加的参数。
返回opts和args。
opts是一个参数选项及其value的元组[('-o', 'value'),('--option',''),...],opts可有重复项
args是一个除去有用参数外其他的命令行输入 [ 'a1', 'a2',... ]
import getopt, sys def main(): try: opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="]) except getopt.GetoptError as err: # print help information and exit: print str(err) # will print something like "option -a not recognized" usage() sys.exit(2) output = None verbose = False for o, a in opts: if o == "-v": verbose = True elif o in ("-h", "--help"): usage() sys.exit() elif o in ("-o", "--output"): output = a else: assert False, "unhandled option" # ... if __name__ == "__main__": main()
二、argparse
参数输入错误时,自动生成help。
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", type=int, help="display a square of a given number") # type=int,可省略,缺省str parser.add_argument("-v", "--verbosity", action="store_true",help="increase output verbosity") #action="store_true",不需要参数值 #parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2],help="increase output verbosity") #type,choice可省 #parser.add_argument("-v", "--verbosity", action="count", default=0,help="increase output verbosity") #不需要参数值,default可省 args = parser.parse_args() answer = args.square**2 if args.verbosity == 2: print "the square of {} equals {}".format(args.square, answer) elif args.verbosity == 1: print "{}^2 == {}".format(args.square, answer) else: print answer
互斥参数选项
import argparse parser = argparse.ArgumentParser(description="calculate X to the power of Y") group = parser.add_mutually_exclusive_group() group.add_argument("-v", "--verbose", action="store_true") group.add_argument("-q", "--quiet", action="store_true") parser.add_argument("x", type=int, help="the base") parser.add_argument("y", type=int, help="the exponent") args = parser.parse_args() answer = args.x**args.y if args.quiet: print answer elif args.verbose: print "{} to the power {} equals {}".format(args.x, args.y, answer) else: print "{}^{} == {}".format(args.x, args.y, answer)
不定数量参数
import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)') args = parser.parse_args() #calling parse_args() will return an object with two attributes, integers and #accumulate. The integers attribute will be a list of one or more ints, and the #accumulate attribute will be either the sum() function, if --sum was specified #at the command line, or the max() function if it was not. print args.accumulate(args.integers)
parser.parse_args(['--sum', '7', '-1', '42'])
也可直接加参数
三、optparse
2.7开始废弃
四、docopt
非标准库,根据文档生成
try.docopt.org
"""Naval Fate. Usage: naval_fate.py ship new <name>... naval_fate.py ship <name> move <x> <y> [--speed=<kn>] naval_fate.py ship shoot <x> <y> naval_fate.py mine (set|remove) <x> <y> [--moored | --drifting] naval_fate.py (-h | --help) naval_fate.py --version Options: -h --help Show this screen. --version Show version. --speed=<kn> Speed in knots [default: 10]. --moored Moored (anchored) mine. --drifting Drifting mine. """ from docopt import docopt if __name__ == '__main__': arguments = docopt(__doc__, version='Naval Fate 2.0') print(arguments) #返回 {'--drifting': False, 'mine': False, '--help': False, 'move': True, '--moored': False, 'new': False, '--speed': '15', 'remove': False, '--version': False, 'set': False, '<name>': ['Guardian'], 'ship': True, '<x>': '100', 'shoot': False, '<y>': '150'}
相关文章推荐
- 流动python - 八皇后问题简单解决方案
- python基础学习笔记<数据库>
- python学习之 字符串前'r'的用法
- python基础学习笔记<内建模块与第三方模块>
- python lib 安装遇到报错clang: error: unknown argument: '-mno-fused-madd'
- Python爬虫框架Scrapy实战之批量抓取招聘信息
- Python多线程,生产者-消费者-终结者
- python 工作自动签到记录
- 零基础学python-初识python与python的解释过程
- 零基础学python-初识python与python的解释过程
- python装饰器的理解
- 670个常用的Python库和示例代码
- python_class_1 How to use def
- 教你用200行Python代码“换脸”
- 用python来爬某电影网站的下载地址
- Python调用百度API之天气查询
- python中MySQLdb模块用法实例
- Read Large Files in Python
- python基础学习笔记<内建模块与第三方模块>
- python基础学习笔记<进阶>