2016-08-16 152 views
0

我完成了在python中编写脚本,现在卡在界面中,这需要从用户那里得到很少的选项,但不知道什么是获得可选参数的最佳方法.. The该代码如下...python getopt/optparse可选命令行参数处理

def getOptions(argv): 
     try: 
      opts,args = getopt.getopt(argv, "hi:c:d:m", ["ifile=", "add=", "delete"]) 
     except getopt.GetoptError: 
      printUsage() 
      sys.exit(2) 
     for opt, arg in opts: 
      if opt in ("-h", "--help"): 
       print ("test -m <make> [src] [dst]\n") 
       print ("test -i <install>[filename] \n") 
       ..... 
       sys.exit() 
      if opt in ("-m", "--make"): 
       make(arg) 
       sys.exit() 
      if opt in ("-i","--install"): 
       install(arg) 
       sys.exit() 
      ... # few more options 
      else: 
       assert False, "unhandled option" 

我的问题是,我怎么能离开了参数(如使用ARG默认的可选路径),如果未提供,从用户那里获取? 目前我提供 ./test -i 我怎么能离开了文件名,并呼吁像 ./test -i
我坚持了同样的问题,更多的时间,我的开发环境是Python 2.6中和由于限制,现在使用optparse但有相同的问题,我必须支持一个可选的参数,并且找不到手动解析sys.argv的方式,除了手动解析sys.argv之外,我有近10个不同的选项,如果可以的话处理一个可选的参数,我的脚本对最终用户来说会更方便。

回答

1

来自: https://docs.python.org/2/library/getopt.html Getopts不支持可选参数。

你可以尝试使用argparse编写代码吗?以下是一个例子:

import argparse 
parser = argparse.ArgumentParser(description='python cli') 
parser.add_argument("-m", "--make", help="execute make", required=True) 
parser.add_argument("-i", "--install", help="execute install", required=True) 

# parse input arguments 
args = parser.parse_args() 

makeVal = args.make 
shouldInstall = args.install 

if makeVal : 
    make(makeVal) 
... 

参考: https://docs.python.org/2.7/library/argparse.html