python處理參數的getopt的使用


在寫腳本程序的時候需要添加一些額外的參數來實現腳本的附加功能或者增強功能,通常的做法是同sys.argv[i]直接來獲取參數的值,但是這個比較局限,要求參數的輸入一定要按照順序。

fileName = sys.argv[1];
regName  = sys.argv[2];

如果在命令行輸入的第一個參數不是文件的名字,那么腳本執行就會出問題。並且上面要求一定要輸入2個參數才能運行。有很大的局限性,如果腳本是開發者本人使用,可能問題不大,如果是交給其他人使用可能就不友好了。

 

為了實現參數順序任意擺放都可以,參數個數任意個數都可以執行腳本,可以使用getopt()函數來實現功能。

1.加入getopt模塊

from getopt import getopt;    // getopt模塊中還有其他函數,這里只需要getopt

2.調用getopt函數

opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])#"ho:"也可以寫成'-h-o:'
print(opts) print(args)

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

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

(3).使用長格式分析串列表:["help", "output="]。長格式串也可以有開關狀態,即后面不跟"="號。如果跟一個等號則表示后面還應有一個參數。這個長格式表示"help"是一個開關選項;"output="則表示后面應該帶一個參數。

(4).調用getopt函數。函數返回兩個列表:opts和args。opts為分析出的格式信息。args為不屬於格式信息的剩余的命令行參數,即不是按照getopt()里面定義的長或短選項字符和附加參數以外的信息opts是一個兩元組的列表。每個元素為:(選項串,附加參數)。如果沒有附加參數則為空串''

(5).整個過程使用異常來包含,這樣當分析出錯時,就可以打印出使用信息來通知用戶如何使用這個程序。

 

3.使用的例子

python xxx.py '-h -o file --help --output=out file1 file2'
opts的輸出結果為: [('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')]
而args則為:
[
'file1', 'file2'],這就是上面不屬於格式信息的剩余的命令行參數。

 

4.推薦使用方式

import getopt, sys

opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])
for o, a in opts:
    if o in ("-h", "--help"):
        usage()
        sys.exit()
    if o in ("-o", "--output"):
        output = a

使用一個循環,每次從opts中取出一個兩元組,賦給兩個變量。o保存選項參數,a為附加參數。接着對取出的選項參數進行處理。代碼中通常要添加一個usage函數來告訴用戶如何使用腳本。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM