python命令列解析 python解析命令列

2021-10-11 04:46:18 字數 2257 閱讀 6022

可以解析這樣的命令

./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...