python解析命令列

來源:互聯網
上載者:User

標籤:

可以解析這樣的命令

./cron_ctrl jobname1 --stop ;./cron_ctrl jobname1 --start;./cron_ctrl jobname1 --list

#!/usr/bin/env pythonimport osimport sysfrom optparse import OptionParserdef cronOptionParser():    name=sys.argv[1]    #print name    parser = OptionParser()    parser.add_option("","--stop",dest="stopname",action="store_false",help="stop a job") #store_false 表示--stop 不帶參數,stopname用來判斷命令中是否有--stop    parser.add_option("","--start",dest="startname",action="store_false",help="start a job")    parser.add_option("-l","--list",dest="listname",action="store_false",help="list a job")    (options,args) = parser.parse_args()    stopname = options.stopname    startname = options.startname    listname = options.listname    if stopname!=None:        ###do something ###        os.system(‘crontab -e‘)    if startname!=None:        ###do something ###        os.system(‘crontab -e‘)    if listname!=None:        ###do somethind ###        os.system(‘crontab -l | grep name‘)if __name__=="__main__":    cronOptionParser()

 

以上代碼主要參考http://blog.csdn.net/azhao_dn/article/details/6921441

需要注意的是一些參數 比如說 -o file 這裡的-o後面需要加參數,而有些比如說-h 不需要加參數,這兩種要注意區別對待

上面這個實現略顯繁瑣,所以有下面的

import sys
import getopt
def TestGetOpt():
  try:
    opts, args = getopt.getopt(sys.argv[1:],‘d:f:h‘,[‘days=‘,‘files=‘,‘help‘])
  except getopt.GetoptError:
     usage()
     sys.exit()

  print (opts)
  print (args)
  for o, a in opts:
     if o in ("-h", "--help"):
         usage()
         sys.exit()
     elif o in ("-d", "--days"):
         day = a
     elif o in ("-f", "--files"):
         files = a
  print (day)
  print (files)

對於程式的解釋是

1. 處理所使用的函數叫getopt(),因為是直接使用import匯入的getopt模組,所以要加上限定getopt才可以。
2. 使用sys.argv[1:]過濾掉第一個參數(它是執行指令碼的名字,不應算作參數的一部分)。
3. 使用短格式分析串"ho:"。當一個選項只是表示開關狀態時,即後面不帶附加參數時,在分析串中寫入選項字元。當選項後面是帶一個附加參數時,在分析串中寫入選項字元同時後面加一個":"號。所以"ho:"就表示"h"是一個開關選項;"o:"則表示後面應該帶一個參數。
4. 使用長格式分析串列表:["help", "output="]。長格式串也可以有開關狀態,即後面不跟"="號。如果跟一個等號則表示後面還應有一個參數。這個長格式表示"help"是一個開關選項;"output="則表示後面應該帶一個參數。
5. 調用getopt函數。函數返回兩個列表:opts和args。opts為分析出的格式資訊。args為不屬于格式資訊的剩餘的命令列參數。opts是一個兩元組的列表。每個元素為:(選項串,附加參數)。如果沒有附加參數則為空白串‘‘。
6. 整個過程使用異常來包含,這樣當分析出錯時,就可以列印出使用資訊來通知使用者如何使用這個程式。

 

最後,這裡http://lingxiankong.github.io/blog/2014/01/14/command-line-parser/ 給出了更多的方法。

 

 

python解析命令列

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.