中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
python OptParse模塊和argparse命令行解析的用法詳解
python OptParse模塊和argparse命令行解析的用法詳解
https://www.cnblogs.com/wj-1314/p/8974021.html
OptParse模塊的簡(jiǎn)單介紹
Python 有兩個(gè)內(nèi)建的模塊用于處理命令行參數(shù):
一個(gè)是 getopt只能簡(jiǎn)單處理 命令行參數(shù);
另一個(gè)是 optparse,它功能強(qiáng)大,而且易于使用,可以方便地生成標(biāo)準(zhǔn)的、符合Unix/Posix 規(guī)范的命令行說(shuō)明。會(huì)自動(dòng)幫你負(fù)責(zé)-h幫助選項(xiàng)。
要自己定制程序的參數(shù)選項(xiàng)控制,可以使用python自帶的OptParse模塊,當(dāng)然也可以直接解析sys.argv里的參數(shù)(但是此比較麻煩)
1
2
3
4
import optparse
optparse 現(xiàn)在不再更新了,更新版本叫 argparse.
import argparse
OptParse支持一般性GUN的選項(xiàng)方法,包括:
1
2
3
4
無(wú)參選項(xiàng), -v
有參選項(xiàng), -p value, –para=value
值參一體, -pvalue (不支持長(zhǎng)參數(shù))
合并選項(xiàng), -abc, -abcp value (最后一個(gè)可以是有參, 其余均無(wú)參)
解析時(shí)候 - 和 -- 的區(qū)別:
1
2
3
- 就看后面的值, 要是無(wú)參的, 那繼續(xù)讀下一個(gè); 要是有參的,就把參數(shù)讀進(jìn)來(lái)(分隔或一體).
-- 直接讀后面的值;
optparse modlue基本用法
一,基本用法
1
2
3
4
5
1,載入OptionParser類(lèi),新建對(duì)象: OptionParser()
2,添加選項(xiàng): add_option(…)
3,參數(shù)解析: parse_args()
舉個(gè)例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# _*_ coding: utf-8 _*_
import optparse
from optparse import OptionParser
# 一個(gè)幫助文檔解釋字符串
hstr = '%prog custom help string'
parser = OptionParser(hstr, description='custom description', version='%prog 1.0')
#通過(guò)OptionParser類(lèi)創(chuàng)建parser實(shí)例,初始參數(shù)usage中的%prog等同于os.path.basename(sys.argv[0]),即
#你當(dāng)前所運(yùn)行的腳本的名字,version參數(shù)用來(lái)顯示當(dāng)前腳本的版本。
'''
添加參數(shù),-f、--file是長(zhǎng)短options,有一即可。
dest='user' 將該用戶輸入的參數(shù)保存到變量user中,可以通過(guò)options.user方式來(lái)獲取該值
action用來(lái)表示將option后面的值如何處理,比如:
XXX.py -f test.txt
經(jīng)過(guò)parser.parse_args()處理后,則將test.txt這個(gè)值存儲(chǔ)進(jìn)-f所代表的一個(gè)對(duì)象,即定義-f中的dest
即option.filename = 'test.txt'
action的常用選項(xiàng)還有store_true,store_false等,這兩個(gè)通常在布爾值的選項(xiàng)中使用。
metavar僅在顯示幫助中有用,如在顯示幫助時(shí)會(huì)有:
-f FILE, --filename=FILE    write output to FILE
-m MODE, --mode=MODE  interaction mode: novice, intermediate, or expert
[default: intermediate]
如果-f這一項(xiàng)沒(méi)有metavr參數(shù),則在上面會(huì)顯示為-f FILENAME --filename=FILENAME,即會(huì)顯示dest的值
defalut是某一選項(xiàng)的默認(rèn)值,當(dāng)調(diào)用腳本時(shí),參數(shù)沒(méi)有指定值時(shí),即采用default的默認(rèn)值。
'''
parser.add_option('-i', '--input', action='store', dest='input', help='read input data from input file')
parser.add_option('-o', '--output', action='store', dest='output', help='write data to output file')
parser.add_option('-q', '--quite', action='store_false', dest='version', help='don\'t print the version')
# parser.add_option('-v', '--version', action='store_true', dest='version', default=False, help='print the version')
# parser.add_option('-v', '--version', action='store_true', dest='version', help='print the version')
parser.add_option('-f', '--file', action='store', dest='file', help='file to handle')
parser.add_option('-a', '--add', action='append', dest='add', help='add to handle')
parser.add_option('-c', '--count', action='count', dest='count', help='count to handle')
parser.add_option('-d', '--count1', action='count', dest='count', help='count1 to handle')
#parser.add_option('-v', '--version', dest='version')
if parser.has_option('-f'):
print('content -f') # parser.set_default('-f', 'myFile')
parser.remove_option('-f')
if not parser.has_option('-f'):
print('do not content -f')
# 用一個(gè)數(shù)組模擬命令參數(shù)
#testArgs = ['-i', 'someForInput', '-f', 'someForFile', '-vq', '-a', 'test1 test2 test3', '-c', '-d']
testArgs = [ '-i', 'someForInput', 'someForFile', 'someForFile1', '-q', '-a', 'test1 test2 test3', '-c', '-d', '-h']
options, args = parser.parse_args(testArgs)
print('options : %s' % options)
print('args : %s' % args)
if options.input:
print('input in args : %s' % options.input)
if options.version:
print('version 1.0.0')
# if options.file:
# print('file in args : %s' % options.file)
if options.add:
print('add in args : %s' % options.add)
print('version in args', options.version)
結(jié)果:
+ View Code
二,新建對(duì)象
1
parse = OptionParse()
形參包括:
1
2
3
4
5
6
7
8
9
10
11
def __init__(self,
usage=None,
option_list=None,
option_class=Option,
version=None,
conflict_handler="error",
description=None,
formatter=None,
add_help_option=True,
prog=None,
epilog=None):
三,新建選項(xiàng)
3.1 可以使用下面幾個(gè)方法:
1
add_option, add_option_group, add_options.
3.2 具體參數(shù)分析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
add_option(…):
add_option 方法中前面的參數(shù)為命令的選項(xiàng), 可以為等價(jià)的短名或者長(zhǎng)名,一般是前面為短名,后面為長(zhǎng)名.
可以配置的參數(shù)有以下:
dest: 可以決定解析后,取值時(shí)的屬性名, 尤其適于有多個(gè)等價(jià)參數(shù). 不指定時(shí)就是選項(xiàng)不加-的字符串.
type: 選項(xiàng)的值類(lèi)型,值的默認(rèn)類(lèi)型是字符串, 這里將值指定為其他類(lèi)型.
default: 缺省值. 沒(méi)有設(shè)置缺省值的為None.
help: 選項(xiàng)中有 -h 時(shí)打印的 help 信息.
metavar: 表示顯示到 help 中選項(xiàng)的默認(rèn)值;
choices: 當(dāng) type 設(shè)置為 choices 時(shí),需要設(shè)置此值.
const: 指定一個(gè)常量值給選項(xiàng), 該常量值將用于后面store_const和append_const,一起合用.
action: 用于控制對(duì)選項(xiàng)和參數(shù)的處理,像無(wú)參數(shù)選項(xiàng)處理,可以設(shè)置為以下幾種字符串:
"store": 儲(chǔ)存值到 dest 指定的屬性,強(qiáng)制要求后面提供參數(shù);
"store_true": 當(dāng)使用該選項(xiàng)時(shí),后面的 dest 將設(shè)置為 true, 不跟參數(shù).
"store_false": 當(dāng)使用該選項(xiàng)時(shí),后面的 dest 將設(shè)置為 false. 常配合另一個(gè) "store_true" 的選項(xiàng)使用同一個(gè) dest 時(shí)使用. 不跟參數(shù).
"append": 儲(chǔ)存值到 dest 指定的屬性,并且是以數(shù)組的形式, 必須跟參數(shù).
"store_const": 用來(lái)存儲(chǔ)參數(shù)為 const 設(shè)置的值到 dest 指定的屬性當(dāng)中.常用于 dest 為同名2個(gè)以上選項(xiàng)時(shí)的處理. 不跟參數(shù).
"append_const": 用來(lái)存儲(chǔ)參數(shù)為 const 設(shè)置的數(shù)組到 dest 指定的屬性當(dāng)中. 不跟參數(shù).
"count": 使用后將給儲(chǔ)存值到 dest 指定的屬性值加1,可以統(tǒng)計(jì)參數(shù)中出現(xiàn)次數(shù).用途不大. 不跟參數(shù).
"callback": 后面指定回調(diào)函數(shù)名(不加括號(hào)),會(huì)將相應(yīng)opt和args傳給回調(diào)函數(shù).
"help", "version": 對(duì)應(yīng)為幫助和版本. 要另外自己設(shè)計(jì)時(shí)使用.
當(dāng) action 設(shè)置為 store_ture / store_false 時(shí), 解析參數(shù)時(shí), 如果有值時(shí)為 Ture / False, 沒(méi)有值時(shí)為 None.
當(dāng) dest 相同時(shí), 一個(gè) action 設(shè)置為 store_false, 另一個(gè) action 設(shè)置為 store_ture 時(shí), 解析參數(shù)時(shí),以在后面出現(xiàn)的為準(zhǔn).
四,選項(xiàng)相關(guān)參數(shù):
4.1,可以用來(lái)同時(shí)設(shè)置多個(gè)選項(xiàng)的默認(rèn)參數(shù)
1
2
3
def set_default(self, dest, value):
def set_defaults(self, **kwargs):
4.2,檢查是否有相應(yīng)的選項(xiàng)
1
def has_option(self, opt_str):
4.3,刪除選項(xiàng)
1
def remove_option(self, opt_str):
4.4,舉個(gè)例子:
1
2
3
4
5
6
7
8
parser = OptionParser()
parser.add_option('-f', '--file', action='store', dest='file', help='file to handle')
if parser.has_option('-f'):
print('content -f')
parser.set_default('-f', 'myFile')
parser.remove_option('-f')
if not parser.has_option('-f'):
print('do not content -f')
輸出:
1
2
content -f
do not content -f
4.5,添加選項(xiàng)組 add_option_group()
如果 options 很多的時(shí)候, 可以進(jìn)行分組,然后進(jìn)行添加. 分組的好處是, 對(duì)一系列程序參數(shù)可以分一個(gè)組,如果有獨(dú)立的 description , 可以另外處理.使用如下:
1
2
3
group = OptionGroup(parser)  #創(chuàng)建分組
group.add_option() #添加選項(xiàng)
parser.add_option_group(group) #將分組加入到解釋器
4.6,添加選項(xiàng)數(shù)組 add_options([Option1,…])
將各個(gè)Option對(duì)象放在一個(gè)列表里再一起添加
五,參數(shù)解析parse_args()
使用 parse_args() 對(duì)參數(shù)進(jìn)行解析,默認(rèn)是使用 sys.argv[1:] 作為參數(shù), 也可以傳遞一個(gè)命令行參數(shù)列表: parse_args(list).
parse_args() 返回的兩個(gè)值:
1
2
options,它是一個(gè)對(duì)象,保存有命令行參數(shù)值。只要知道命令行參數(shù)名,如 input,就可以訪問(wèn)其對(duì)應(yīng)的值:options.input 。
args ,它是沒(méi)被解析的命令行參數(shù)的列表。
六,幫助文檔
默認(rèn)自動(dòng)帶有 -h 和 --help 來(lái)輸出幫助文檔, 輸出后程序終止.
幫助文檔由三部分組成:
1
2
3
4
5
6
7
8
usage 幫助部分,
usage 幫助部分一般在 OptionParser 初始化時(shí)輸入,為第一個(gè)參數(shù), 也可以用具體形參名指定. 可以使用 %prog 來(lái)表示當(dāng)前的程序名.
description 描述部分
在初始化 OptionParser 時(shí) description 形參指定的內(nèi)容.
選項(xiàng)以及選項(xiàng)說(shuō)明部分
選項(xiàng)加入時(shí)定義的說(shuō)明文字
OptionParser 的形參 version 可以指定 --version 輸出的字符串, 同樣支持%prog, 如 version="%prog 1.0"
舉個(gè)例子:
1
2
3
# 一個(gè)幫助文檔解釋字符串
hstr = '%prog custom help string'
parser = OptionParser(hstr, description='custom description')
1
2
3
get_usage(), get_description(), get_version(): 獲得對(duì)應(yīng)的字符串.
print_help(), print_usage(), print_description(), print_version(): 輸出相應(yīng)內(nèi)容
error(str): 出錯(cuò)并輸出str.
Python命令行解析argparse常用語(yǔ)法使用簡(jiǎn)介
python中命令行解析最簡(jiǎn)單最原始的方法是使用sys.argv來(lái)實(shí)現(xiàn),更高級(jí)的可以使用aegparse這個(gè)模塊,argparse從python2.7開(kāi)始被加入標(biāo)準(zhǔn)庫(kù),所以python版本在2.7以下,那么需要安裝一下。
1
2
3
4
5
import argparse
parser=argparse.ArgumentParser()
parser.add_argument("echo",help="echo the string")
args=parser.parse_args()
print args.echo
1、導(dǎo)入argparse模塊
2、創(chuàng)建解析器對(duì)象ArgumentParser,可以添加參數(shù)。
description:描述程序
parser=argparse.ArgumentParser(description="This is a example program ")
add_help:默認(rèn)是True,可以設(shè)置False禁用
3、add_argument()方法,用來(lái)指定程序需要接受的命令參數(shù)
定位參數(shù):
parser.add_argument("echo",help="echo the string")
可選參數(shù):
parser.add_argument("--verbosity", help="increase output verbosity")
在執(zhí)行程序的時(shí)候,定位參數(shù)必選,可選參數(shù)可選。
add_argument()常用的參數(shù):
dest:如果提供dest,例如dest="a",那么可以通過(guò)args.a訪問(wèn)該參數(shù)
default:設(shè)置參數(shù)的默認(rèn)值
action:參數(shù)出發(fā)的動(dòng)作
store:保存參數(shù),默認(rèn)
store_const:保存一個(gè)被定義為參數(shù)規(guī)格一部分的值(常量),而不是一個(gè)來(lái)自參數(shù)解析而來(lái)的值。
store_ture/store_false:保存相應(yīng)的布爾值
append:將值保存在一個(gè)列表中。
append_const:將一個(gè)定義在參數(shù)規(guī)格中的值(常量)保存在一個(gè)列表中。
count:參數(shù)出現(xiàn)的次數(shù)
parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")
version:打印程序版本信息
type:把從命令行輸入的結(jié)果轉(zhuǎn)成設(shè)置的類(lèi)型
choice:允許的參數(shù)值
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")
help:參數(shù)命令的介紹
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
python命令行參數(shù)是什么
Python: 使用 optparse 處理命令行參數(shù) ? Ross Wan's World!
Python中optparse模塊使用淺析
python模塊介紹- argparse:命令行選項(xiàng)及參數(shù)解析
python中使用argparse.add_argument_group() 對(duì)命令行參數(shù)進(jìn)行概念性分組
python Argparse 模塊入門(mén)
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服