码迷,mamicode.com
首页 > 编程语言 > 详细

python日常碎碎念

时间:2017-06-09 18:22:25      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:lis   rto   lib   command   short   org   自动   nbsp   demo   

关于取命令行中参数的方法

1,sys.args

这个方法自动获取参数,并split。一般情况下第一个元素是程序的名字。即

python script.py arg1 arg2

然后sys.args返回的list就是[script.y, arg1, arg2]。

如果是用python -c ‘command...‘,这种args[0]就是‘-c‘ ps:用了这种方式干嘛还要去取参数。。

如果是直接用python,那args[0]就是空。ps:就是直接打开python,那我干嘛要取参数,尴尬

 

2,getopt

>>> 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]

用法简单明了,getopt接收一个经过split的list,然后根据第二个参数(短参数构成的str,有需要赋值的用:冒号表示),如上面的c和d,就会跟上相应的值,但是,这种只能用于单字母,也就是shortopts

如果需要长参数,longopts,那就如下

>>> 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]

第三个参数附上longopts的列表,并且要注意的是,如果是需要赋值的,就需要带上=

demo

import sys
import getopt

def main():
    try:
        opt, args = getopt.getopt(sys.argv[1:], ho:v, [help, output=])
    except getopt.GetoptError as err:
        print(err)
        sys.exit(2)
    output = None
    verbose = False
    for o, a in opts:
        if o == -v:
            verbose = True
        elif o in (-h, --help):
            sys.exit()
        elif o in (-o, --output):
            output = a 
        else:
            assert False, unhandled option
            
if __name__ == __main__:
    main()

demo里面处理了h(help), o(output), v这几个参数

 

以上例子就来自官方文档

 

python日常碎碎念

标签:lis   rto   lib   command   short   org   自动   nbsp   demo   

原文地址:http://www.cnblogs.com/nanrou/p/6973100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!