在平時(shí)的撰寫(xiě)Python腳本制作的過(guò)程當(dāng)中,我們通常需要根據(jù)查詢(xún)參數(shù)傳到某些自變量基本參數(shù),使新項(xiàng)目應(yīng)用更加靈便便捷。本文列舉了搭建Python查詢(xún)參數(shù)的4種普遍方法,所需要的可以了解一下小伙伴們好,在平時(shí)的撰寫(xiě)Python腳本制作的過(guò)程當(dāng)中,我們通常需要根據(jù)查詢(xún)參數(shù)傳到某些自變量基本參數(shù),使新項(xiàng)目應(yīng)用更加靈便便捷
本文我們將列舉出搭建Python查詢(xún)參數(shù)的4種普遍方法
分別是:
內(nèi)嵌sys.argv控制模塊
內(nèi)嵌argparse控制模塊
內(nèi)嵌getopt模塊
第三方平臺(tái)依賴(lài)庫(kù)click
1.sys.argv
搭建查詢(xún)參數(shù)非常簡(jiǎn)單、普遍的方法是運(yùn)用內(nèi)嵌的「sys.argv」控制模塊
它是把基本參數(shù)以一種規(guī)范有序目錄傳到,因而在使用過(guò)程中傳參次序務(wù)必固定不動(dòng)
因而,這種方法適用基本參數(shù)數(shù)量少且情景固定工程中
importsys if__name__=='__main__': #獲得參數(shù)列表 #留意:sys.argv[0]意味著第一位基本參數(shù),即:腳本制作名字「1_sys.argv.py」 #別的參數(shù)列表 args=sys.argv[1:] #基本參數(shù)數(shù)量 args_length=len(sys.argv)ifsys.argvelse0 print("清除運(yùn)作主文件基本參數(shù),別的參數(shù)列表為:",args) print("基本參數(shù)數(shù)量:",args_length) #應(yīng)用 #python31_sys.argv.pyarg1arg2 #清除運(yùn)作主文件基本參數(shù),別的參數(shù)列表為:[arg1,arg1] #基本參數(shù)數(shù)量:3
需注意,在腳本制作中以「sys.argv」獲得的參數(shù)列表中,第一位基本參數(shù)意味著腳本制作主文件目錄
2.argparse
內(nèi)嵌的argparse控制模塊能夠比較輕松地編寫(xiě)出友善的查詢(xún)參數(shù)腳本制作,而且它會(huì)一鍵生成協(xié)助操作手冊(cè),在客戶給程序流程傳到失效基本參數(shù)時(shí)可以拋出去清楚的錯(cuò)誤報(bào)告
官方文檔
使用這些搭建查詢(xún)參數(shù)包括3個(gè)階段:
搭建基本參數(shù)分析對(duì)象添加基本參數(shù)加上基本參數(shù)分析基本參數(shù)
1.搭建argv分析總體目標(biāo)
importargparse ... #建立一個(gè)argv分析總體目標(biāo) parser=argparse.ArgumentParser(description='argv') ...
2.加上argv
務(wù)必注意的是,--arg1用以特定主要參數(shù)名字,-a1意味著dest總體目標(biāo)變量類(lèi)型(縮寫(xiě))
... #設(shè)定3個(gè)主要參數(shù) #主要參數(shù)1:arg1,整形,非必要調(diào)用方法 #主要參數(shù)2:arg2,字符串?dāng)?shù)組,非必要調(diào)用方法,包括初始值「xag」 #主要參數(shù)3:arg3,字符串類(lèi)型,務(wù)必傳到的主要參數(shù) parser.add_argument('--arg1','-a1',type=int,help='主要參數(shù)1,非必要主要參數(shù)') parser.add_argument('--arg2','-a2',type=str,help='主要參數(shù)2,非必要主要參數(shù),包括初始值',default='xag') parser.add_argument('--arg3','-a3',type=str,help='主要參數(shù)3,務(wù)必主要參數(shù)',required=True) ...
3.分析出變量值
... #分析主要參數(shù),獲得每一個(gè)argv(Namespace),隨后變?yōu)樵~典 args=vars(parser.parse_args()) #獲得全部主要參數(shù) print("全部argv為:") forkeyinargs: print(f"argv名:{key},變量值:{args[key]}") ... 使用時(shí),大家就可以用「-h/--help」指令主要參數(shù)查詢(xún)幫助文件 #查詢(xún)argv幫助文件 python32_argparse.py--help #或 python32_argparse.py-h 上邊使用的3個(gè)主要參數(shù),參數(shù)arg1、arg2非必要傳值,arg3務(wù)必傳值,此外參數(shù)arg2特定了初始值 #參數(shù)arg3務(wù)必,參數(shù)arg1和參數(shù)arg2非必要,在其中參數(shù)arg2設(shè)置權(quán)限初始值 #調(diào)用方法arg3 #python32_argparse.py--arg3123 #python32_argparse.py-a3123 xingagxingagdeMacBook-Proargs%python32_argparse.py-a3123 全部argv為: argv名:arg1,變量值:None argv名:arg2,變量值:xag argv名:arg3,變量值:123 #調(diào)用方法arg1、arg3 xingagxingagdeMacBook-Proargs%python32_argparse.py-a1111-a3123 全部argv為: argv名:arg1,變量值:111 argv名:arg2,變量值:xag argv名:arg3,變量值:123 #調(diào)用方法arg1、arg2、arg3 xingagxingagdeMacBook-Proargs%python32_argparse.py-a1111-a2222-a3123 全部argv為: argv名:arg1,變量值:111 argv名:arg2,變量值:222 argv名:arg3,變量值:123
3.getopt
getopt是Python中的內(nèi)嵌標(biāo)準(zhǔn)模塊,需要結(jié)合sys.argv控制模塊,立即分析腳本運(yùn)行時(shí)主要參數(shù)
應(yīng)用文件格式:getopt(args,shortopts,longopts=[])
在其中
args
參數(shù)列表,能通過(guò)sys.argv獲得,可以參考一下上邊
shortopts短主要參數(shù)所組成的字符串?dāng)?shù)組
界定短主要參數(shù),假如主要參數(shù)有值,必須要在短主要參數(shù)后增加1個(gè)「:」標(biāo)記
傳參使用方法:-n23
longopts長(zhǎng)參數(shù)列表
界定長(zhǎng)參數(shù)列表時(shí),假如某一主要參數(shù)有值,必須要在短主要參數(shù)后增加1個(gè)「=」標(biāo)記
傳參使用方法:–port8080
這兒以傳到數(shù)據(jù)庫(kù)服務(wù)器主要參數(shù)為例子(主要參數(shù)包括ip、登錄名、登陸密碼、數(shù)據(jù)庫(kù)系統(tǒng)名字)進(jìn)行介紹
fromgetoptimportgetopt importsys #獲取參數(shù) #sys.argv[1:]:獲得除腳本制作文件夾名稱(chēng)以外全部argv #opts:存在全部選擇項(xiàng)以及輸入值的數(shù)組目錄 #args:清除有價(jià)值的鍵入之后剩余部分 opts,args=getopt(sys.argv[1:],'i:u:p:d:',['ip=','user=','pwd=','db=']) #獲得變量值 #短主要參數(shù) #python34_getopt.py-i127.0.0.1-uroot-p123456-dmysqldb #長(zhǎng)主要參數(shù) #python34_getopt.py--ip127.0.0.1-uroot-p123456-dmysqldb ip_pre=[item[1]foriteminoptsifitem[0]in('-i','--ip')] ip=ip_pre[0]iflen(ip_pre)>0elseNone print("主要參數(shù)ip:",ip) user_pre=[item[1]foriteminoptsifitem[0]in('-u','--user')] user=user_pre[0]iflen(user_pre)>0elseNone print("主要參數(shù)user:",user) pwd_pre=[item[1]foriteminoptsifitem[0]in('-p','--pwd')] pwd=pwd_pre[0]iflen(pwd_pre)>0elseNone print("主要參數(shù)pwd:",pwd) db_pre=[item[1]foriteminoptsifitem[0]in('-d','--db')] db=db_pre[0]iflen(db_pre)>0elseNone print("主要參數(shù)db:",db) 在運(yùn)行腳本時(shí),我們能運(yùn)用「短主要參數(shù)」或「長(zhǎng)主要參數(shù)」的方式進(jìn)行傳送 #檢測(cè) #短主要參數(shù) python34_getopt.py-i127.0.0.1-uroot-p123456-dmysqldb #長(zhǎng)主要參數(shù) python34_getopt.py--ip127.0.0.1--userroot--pwd123456--dbmysqldb
4.click
click作為第三方依賴(lài)庫(kù),它為命令行工具封裝了大量的方法,可以非常方便實(shí)現(xiàn)命令行參數(shù)
項(xiàng)目地址
首先,我們需要安裝依賴(lài)庫(kù)click
import click #安裝依賴(lài) #pip3 install-U click click.command() click.option('--arg1',default='111',help='參數(shù)arg1,默認(rèn)值為「111」') click.option('--arg2',type=int,help='參數(shù)arg2') click.option('--arg3',type=str,help='參數(shù)arg3') def start(arg1,arg2,arg3): """ 基于參數(shù)arg1、參數(shù)arg2、參數(shù)arg3運(yùn)行項(xiàng)目 :param arg1: :param arg2: :param arg3: :return: """ print("參數(shù)arg1值為:",arg1) print("參數(shù)arg2值為:",arg2) print("參數(shù)arg3值為:",arg3) if __name__=='__main__': start() 然后,在主運(yùn)行函數(shù)上通過(guò)裝飾器配置參數(shù)即可 比如,上面就定義了3個(gè)命令行參數(shù)arg1、arg2、arg3,并設(shè)置了參數(shù)的類(lèi)型及默認(rèn)值 最后,在運(yùn)行腳本時(shí)只需要按參數(shù)設(shè)定傳遞對(duì)應(yīng)的值即可 #不包含參數(shù) xingag xingagdeMacBook-Pro args%python3 3_click.py 參數(shù)arg1值為:111 參數(shù)arg2值為:None 參數(shù)arg3值為:None #包含參數(shù)arg1 xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1 參數(shù)arg1值為:test1 參數(shù)arg2值為:None 參數(shù)arg3值為:None #包含參數(shù)arg1、arg2 #注意:arg2的參數(shù)類(lèi)型為整形,傳入的參數(shù)必須能轉(zhuǎn)為整形,否則會(huì)報(bào)錯(cuò) xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1--arg2 222 參數(shù)arg1值為:test1 參數(shù)arg2值為:222 參數(shù)arg3值為:None #包含參數(shù)arg1、arg2、arg3 xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1--arg2 222--arg3 test3 參數(shù)arg1值為:test1 參數(shù)arg2值為:222 參數(shù)arg3值為:test3
綜上所述,這篇文章就給大家介紹到這里了。希望可以給大家?guī)?lái)幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/129076.html
在平時(shí)的撰寫(xiě)Python腳本制作的過(guò)程當(dāng)中,我們通常需要根據(jù)查詢(xún)參數(shù)傳到某些自變量主要參數(shù),使新項(xiàng)目應(yīng)用更加靈便便捷。本文列舉了搭建Python查詢(xún)參數(shù)的4種普遍方法,所需要的可以了解一下 小伙伴們好,在平時(shí)的撰寫(xiě)Python腳本制作的過(guò)程當(dāng)中,我們通常需要根據(jù)查詢(xún)參數(shù)傳到某些自變量主要參數(shù),使新項(xiàng)目應(yīng)用更加靈便便捷 本文我們將列舉出搭建Python查詢(xún)參數(shù)的4種普遍方法 分別是: 內(nèi)...
摘要:如果語(yǔ)句中使用了子查詢(xún)集合操作臨時(shí)表等情況,會(huì)給列帶來(lái)很大的復(fù)雜性。會(huì)遞歸執(zhí)行這些子查詢(xún),把結(jié)果放在臨時(shí)表里。查詢(xún)優(yōu)化器從中所選擇使用的索引。該字段顯示了查詢(xún)優(yōu)化器通過(guò)系統(tǒng)收集的統(tǒng)計(jì)信息估算出來(lái)的結(jié)果集記錄條數(shù)。 引言 優(yōu)化SQL,是DBA常見(jiàn)的工作之一。如何高效、快速地優(yōu)化一條語(yǔ)句,是每個(gè)DBA經(jīng)常要面對(duì)的一個(gè)問(wèn)題。在日常的優(yōu)化工作中,我發(fā)現(xiàn)有很多操作是在優(yōu)化過(guò)程中必不可少的步驟。然...
摘要:最近在閱讀微型框架的源碼,發(fā)現(xiàn)了中有一個(gè)既是裝飾器類(lèi)又是描述符的有趣實(shí)現(xiàn)。所以第三版的代碼可以這樣寫(xiě)第三版的代碼沒(méi)有使用裝飾器,而是使用了描述符這個(gè)技巧。更大的問(wèn)題來(lái)自如何將描述符與裝飾器結(jié)合起來(lái),因?yàn)槭且粋€(gè)類(lèi)而不是方法。 最近在閱讀Python微型Web框架Bottle的源碼,發(fā)現(xiàn)了Bottle中有一個(gè)既是裝飾器類(lèi)又是描述符的有趣實(shí)現(xiàn)。剛好這兩個(gè)點(diǎn)是Python比較的難理解,又混合在...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02