最近用到python的命令行参数,特地学习了以下,发现有以下三种方法:

  1. sys.argv
  2. argparse
  3. getopt

对于第一种方法是最原始的方法了,缺点是功能太单一了,什么都要自己实现;第二种功能很强大,对于一些参数的异常都能定制,但是缺点是有点复杂;最pythonic的就是getopt了,简单明了,清晰快捷.

介绍下getopt的用法

命令行参数主要分为以下两种:

  1. 短选项
  2. 长选项

而每种参数又分为附加参数和非附加参数,见下表:

长选项 长选项附加参数 短选项 短选项附加参数
参数 --b --b item -b -b item
getopt表示 b b= b b:

没看懂?看下面例子:

./justForSample -c -b 5 --mm --lala /home

这个命令行包含以上四类:

import getopt

opts,args = getopt.getopt(sys.argv[1:],'cb:',['mm','lala='])

getopt返回两个参数:一个是对应的参数选项和value元组,另一个是除去有用参数外的其他命令行输出(这个一般为空)。

c和b是短选项,b后面需要参数所以加:,mm和lala是长选项,lala后面需要参数所以加=.

完整程序arg.py

  #-*- encoding: UTF-8 -*-                                                                                                     
  #---------------------------------import------------------------------------
  import getopt
  import sys
  #---------------------------------------------------------------------------
  opts,args = getopt.getopt(sys.argv[1:],'cb:',['mm','lala='])
  for op, value in opts:
      print op,value
 ############################################################################

输出结果

$python arg.py -c -b 5 --mm --lala /home

-c 
-b 5
--mm 
--lala /home

是不是很简单?