python日常碎碎念

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python日常碎碎念相关的知识,希望对你有一定的参考价值。

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

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日常碎碎念的主要内容,如果未能解决你的问题,请参考以下文章

碎碎念日常——一个反思日记

Python碎碎念

札记-碎碎念

碎碎念集萃三三

碎碎念集萃三四

一周碎碎念,2021.10.31,重启跑步