关于取命令行中参数的方法
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这几个参数
以上例子就来自官方文档。
时间: 2024-10-05 03:26:25