python 有兩個內建的模組用於處理命令列引數:
乙個是 getopt,《deep in python》一書中也有提到,只能簡單處理 命令列引數;
另乙個是 optparse,它功能強大,而且易於使用,可以方便地生成標準的、符合unix/posix 規範的命令列說明。
使用optionparser模組來解析
optionparser的執行過程:
1、匯入optionparser : from optparse import optionparser
2、構造optionparser的物件:parser = optionparser()
3、往optionparser物件中增加option :parser.add_option(...),新增的內容是命令列引數,及相關的幫助資訊
每個命令列引數由引數名字串和引數屬性組成,如-f或者file分別表示長短引數名:
parser.add_option(
"-f"
,
"--file"
, ...)
4、呼叫optionparser的解析函式:
(options, args)
=
parser.parse_args()
args是由positional arguments組成的列表
示例如下:
from
optparse
import
optionparser
optparser
=
optionparser()
optparser.add_option(
'-f'
,
'--file'
,action
=
'store'
,
type
=
"string"
,dest
=
'filename'
)
optparser.add_option(
"-v"
,
"--vison"
, action
=
"store_false"
, dest
=
"verbose"
,
default
=
'hello'
,
help
=
"make lots of noise [default]"
)
#optparser.parse_args() 剖析並返回乙個字典和列表,
#字典中的關鍵字是我們所有的add_option()函式中的dest引數值,
#而對應的value值,是add_option()函式中的default的引數或者是
#由使用者傳入optparser.parse_args()的引數
fakeargs
=
[
'-f'
,
'file.txt'
,
'-v'
,
'how are you'
,
'arg1'
,
'arg2'
]
option , args
=
optparser.parse_args()
op , ar
=
optparser.parse_args(fakeargs)
print
(
"option : "
,option)
print
(
"args : "
,args)
print
(
"op : "
,op)
print
(
"ar : "
,ar)
輸出結果:
option :
args :
op :
ar : [
'how are you'
,
'arg1'
,
'arg2'
]
注意:我們對optparser.parser_args()函式傳入引數列表和沒有傳入引數列表的區別。在上述使用fakeargs引數列表代替了我們在命令列輸入的引數。如果我們在shell中執行這個**,會如此傳參:
add_option函式分析:
add_option()引數說明:
action:儲存方式,分為三種store、store_false、store_true
type
:型別
dest:儲存的變數
default:預設值
help
:幫助資訊
action的取值有那麼多,我麼著重說三個store、store_false、store_true 三個取值。 action預設取值store。
--store 上表示命令行引數的值儲存在options物件中。例如上面一段**,如果我們對optparser.parse_args()函式傳入的引數列表中帶有『-f』,那麼就會將列表中『-f』的下乙個元素作為其dest的實參filename的值,他們兩個引數形成乙個字典中的乙個元素。相反當我們的引數列表中沒有『-f』這個元素時,那麼filename的值就會為空。
--store_false fakeargs 中存在'-v'verbose將會返回false,而不是『how are you』,也就是說verbose的值與'-v'的後一位無關,只與『-v』存在不存在有關。
--store_ture 這與action="store_false"類似,只有其中有引數'-v'存在,則verbose的值為true,如果'-v'不存在,那麼verbose的值為none
python中 python中的 與
這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...
python中的物件 Python中的變數 物件
由於沒時間系統學習下python 只能見乙個問題 乙個問題了 一 初級 物件 關於python中的資料型別,今天重新認識了下。參考 首先,python中,物件才有型別,變數是沒有型別的,它只是物件的 引用 其次,python中物件被分為兩類 可更改物件和不可更改物件 包括numbers,string...
python中的引數傳遞 python中的引數傳遞
begin 前面在介紹python的六大資料型別的時候提到根據資料可變和不可變進行的資料型別分類 python3 的六個標準資料型別中 不可變資料 3 個 number 數字 string 字串 tuple 元組 可變資料 3 個 list 列表 dictionary 字典 set 集合 pytho...