可以解析這樣的命令
./cron_ctrl jobname1 --stop ;./cron_ctrl jobname1 --start;./cron_ctrl jobname1 --list
#!/usr/bin/env python
importosimportsysfrom optparse importoptionparserdefcronoptionparser():
name=sys.ar**[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.listnameif 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()
以上**主要參考
需要注意的是一些引數 比如說 -o file 這裡的-o後面需要加引數,而有些比如說-h 不需要加引數,這兩種要注意區別對待
上面這個實現略顯繁瑣,所以有下面的
import sys
import getopt
def testgetopt():
try:
opts, args = getopt.getopt(sys.ar**[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.ar**[1:]過濾掉第乙個引數(它是執行指令碼的名字,不應算作引數的一部分)。
3.使用短格式分析串"ho:"。當乙個選項只是表示開關狀態時,即後面不帶附加引數時,在分析串中寫入選項字元。當選項後面是帶乙個附加引數時,在分析串中
寫入選項字元同時後面加乙個":"號。所以"ho:"就表示"h"是乙個開關選項;"o:"則表示後面應該帶乙個引數。
4. 使用長格式分析串列表:["help", "output="]。長格式串也可以有開關狀態,即後面不跟"="號。如果跟乙個等號則表示後面還應有乙個引數。這個長格式表示"help"是乙個開關選項;"output="則表示後面應該帶乙個引數。
5. 呼叫getopt函式。函式返回兩個列表:opts和args。opts為分析出的格式資訊。args為不屬於格式資訊的剩餘的命令列引數。opts是乙個兩元組的列表。每個元素為:(選項串,附加引數)。如果沒有附加引數則為空串''。
6. 整個過程使用異常來包含,這樣當分析出錯時,就可以列印出使用資訊來通知使用者如何使用這個程式。
最後,這裡 給出了更多的方法。
python 解析命令列
python中的命令列解析最簡單最原始的方法是使用sys.ar 來實現,更高階的可以使用argparse這個模組。argparse從python 2.7開始被加入到標準庫中,所以如果你的python版本還在2.7以下,那麼需要先手動安裝。基本使用 import argparse parser arg...
python 命令列解析argparse
python中的命令列解析最簡單最原始的方法是使用sys.argv來實現,更高階的可以使用argparse這個模組。argparse從python 2.7開始被加入到標準庫中,所以如果你的python版本還在2.7以下,那麼需要先手動安裝。import argparse parser argpars...
python解析命令列引數
使用乙個先進的模組名為argparse,跟unix程式的命令列引數很像。直接對code做個筆記 import sys import argparse def main args print first name directory s args.first name print first para...