有時候我們需要寫一些指令碼處理一些任務,這時候往往需要提供一些命令列引數,根據不同引數進行不同的處理,在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為選項字母 以 開始 組成的字串,如果某個選項字母...