python中處理命令列引數命令getopt

2022-09-06 11:12:21 字數 3230 閱讀 6170

**

os下有個方法walk,非常的好用,用來生成乙個generator。每次可以得到乙個三元tupple,其中第乙個為起始路徑,第二個為起始路徑下的資料夾,第三個是起始路徑下的檔案。

1. 匯入getopt, sys 模組

2. 分析命令列引數

3. 處理結果

第一步很簡單,只需要:

import getopt, sys

第二步處理方法如下(以python 手冊上的例子為例):

python**  

try:  

opts, args = getopt.getopt(sys.ar**[1

:], 

"ho:"

, ["help"

, "output="

])  

except

getopt.getopterror:  

# print help information and exit:

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']

第三步主要是對分析出的引數進行判斷是否存在,然後再進一步處理。主要的處理模式為:

python**  

foro, a 

inopts:  

ifo in(

"-h"

, "--help"

):  

usage()  

sys.exit()  

ifo in(

"-o"

, "--output"

):  

output = a  

使用乙個迴圈,每次從opts 中取出乙個兩元組,賦給兩個變數。o 儲存選項引數,a 為附加引數。接著對取出的選項引數進行處理。(例子也採用手冊的例子)

實踐篇:

python**  

#!/usr/bin/env python

import

sys;  

import

getopt;  

defusage():  

print

("usage:%s [-a|-o|-c] [--help|--output] args...."

%dsys.ar**[

0]);  

if"__main__"

== __name__:  

#lsargs = [""];

try:  

opts,args = getopt.getopt(sys.ar**[1

:], 

"ao:c"

, ["help"

, "output="

]);  

print

("**********== opts ***************==="

);         

print

(opts);  

print

("**********== args ***************==="

);  

print

(args);  

#check all param

foropt,arg 

inopts:  

ifopt in(

"-h"

, "--help"

):  

usage();  

sys.exit(1

);  

elif

opt in(

"-t"

, "--test"

):  

print

("for test option"

);  

else

:  print

("%s  ==> %s"

%(opt, arg));          

except

getopt.getopterror:  

print

("getopt error!"

);  

usage();  

sys.exit(1

);  

執行結果:

$ ./test_getopt.py  -a -oaaa -caa --output=out file1 t file2 -d

**********== opts ***************===

[('-a', ''), ('-o', 'aaa'), ('-c', ''), ('-a', ''), ('-a', ''), ('--output', 'out')]

**********== args ***************===

['file1', 't', 'file2', '-d']

-a  ==>

-o  ==> aaa

-c  ==>

-a  ==>

-a  ==>

--output  ==> out

Python中處理命令列引數

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

Python中處理命令列引數

用 getopt.getopt 來分析命令列參 數。getopt是用來分析命令列引數的模組。模組中的函式 getopt args,options long options args一般為sys.ar 1 options為選項字母 以 開始 組成的字串,如果某個選項字母帶有引數,那麼這個字母有要加 號...

python命令列引數處理

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