Python 命令行參數和getopt模塊詳解

Python的標準庫裏實際上有專門處理命令行參數的getopt模塊,裏面的提供了

2個函數和一個類,咱們主要使用getopt函數,先看下函數原型:
def getopt(args, shortopts, longopts = []):
先看一個例子,這樣會便於理解。函數

try:  
    opts, args = getopt.getopt(sys.argv[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 才能夠。spa


2. 使用sys.argv[1:] 過濾掉第一個參數(它是執行腳本的名字,不該算做參數的一部分)。  命令行


3. 使用短格式分析串"ho:" 。當一個選項只是表示開關狀態時,即後面不帶附加參數時,在分析串中寫入選項字符當選項後面是帶一個附加參數時,在分析串中寫入選項字符同時後面加一個":" 號 。因此"ho:" 就表示"h" 是一個開關選項;"o:" 則表示後面應該帶一個參數。code

 
4. 使用長格式分析串列表:["help", "output="] 。長格式串也能夠有開關狀態,即後面不跟"=" 號。若是跟一個等號則表示後面還應有一個參數 。這個長格式表示"help" 是一個開關選項;"output=" 則表示後面應該帶一個參數。  orm


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

for o, a in opts:  
    if o in ("-h", "--help"):  
        usage()  
        sys.exit()  
    if o in ("-o", "--output"):  
        output = a
相關文章
相關標籤/搜索