2016-08-16 148 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