python 命令列引數處理 getopt模組詳解

2021-09-20 02:59:52 字數 2012 閱讀 1691

有時候我們需要寫一些指令碼處理一些任務,這時候往往需要提供一些命令列引數,根據不同引數進行不同的處理,在python裡,命令列的引數和c語言很類似(因為標準python是用c語言實現的)。在c語言裡,main函式的原型為int main(int argc, char **ar**),這裡主要指linux平台, argc指的是命令列傳入的引數個數(程式的name為第乙個引數),而ar**則是乙個指標陣列,每乙個元素為指向乙個命令列引數的指標。在python裡的命令列引數是儲存在sys.ar**裡,ar**是乙個列表,第乙個元素也為程式名稱。

看下面的例子:

test.py

# -*- coding:utf-8 -*-

import sys

if __name__ == '__main__':

for item in sys.ar**:

print i

在命令列執行./test.py  1 2 3,結果如下:

test.py

用這種方式可以進行命令列引數的判斷從而進行不同的動作。 

而python的標準庫里實際上有專門處理命令列引數的getopt模組,裡面的提供了2個函式和乙個類,我們主要使用getopt函式,先看下函式原型: 

def getopt(args, shortopts, longopts = ): 

先看乙個例子,這樣會便於理解。

try:  

opts, args = getopt.getopt(sys.ar**[1:], "ho:", ["help", "output="])

except getopt.getopterror:

# print help information and exit:

for name, value in opts:

print name, value

for item in args:

print item

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. 整個過程使用異常來包含,這樣當分析出錯時,就可以列印出使用資訊來通知使用者如何使用這個程式。  

如上面解釋的乙個命令列例子為:  

'-h -o file --help --output=out file1 file2' 

在分析完成後,opts 應該是:  

[('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')] 

而args 則為:  

['file1', 'file2'] 

下面就是根據不同引數處理:

for o, a in opts:  

if o in ("-h", "--help"):

usage()

sys.exit()

if o in ("-o", "--output"):

output = a

python命令列引數處理

本篇將介紹python中sys,getopt模組處理命令列引數 如果想對python指令碼傳引數,python中對應的argc,argv c語言的命令列引數 是什麼呢?需要模組 sys 引數個數 len sys.argv 指令碼名 sys.argv 0 引數1 sys.argv 1 引數2 sys....

命令列引數處理

url url include include include include include struct student optsting是選項引數組成的字串,字元後跟乙個冒號,表明該選項要求有引數。static const char optstring i n h?option結構稱為長選項表...

Python中處理命令列引數

python中處理命令列引數 用 getopt.getopt 來分析命令列引數。getopt是用來分析命令列引數的模組。模組中的函式 getopt args,options long options args一般為sys.argv 1 options為選項字母 以 開始 組成的字串,如果某個選項字母...