在平時的撰寫Python腳本制作的過程當中,我們通常需要根據查詢參數(shù)傳到某些自變量主要參數(shù),使新項目應用更加靈便便捷。本文列舉了搭建Python查詢參數(shù)的4種普遍方法,所需要的可以了解一下
小伙伴們好,在平時的撰寫Python腳本制作的過程當中,我們通常需要根據查詢參數(shù)傳到某些自變量主要參數(shù),使新項目應用更加靈便便捷
本文我們將列舉出搭建Python查詢參數(shù)的4種普遍方法
分別是:
內嵌sys.argv控制模塊
內嵌argparse控制模塊
內嵌getopt模塊
第三方平臺依賴庫click
1.sys.argv
搭建查詢參數(shù)非常簡單、普遍的方法是運用內嵌的「sys.argv」控制模塊
它是把主要參數(shù)以一種規(guī)范有序目錄傳到,因而在使用過程中傳參次序務必固定不動
因而,這種方法適用主要參數(shù)數(shù)量少且情景固定工程中
import sys if __name__=='__main__': #獲取參數(shù)列表 #注意:sys.argv[0]代表第一個參數(shù),即:腳本名稱「1_sys.argv.py」 #其他參數(shù)列表 args=sys.argv[1:] #參數(shù)個數(shù) args_length=len(sys.argv)if sys.argv else 0 print("排除運行主文件參數(shù),其他參數(shù)列表為:",args) print("參數(shù)總數(shù):",args_length) #應用 #python31_sys.argv.pyarg1arg2 #清除運作主文件主要參數(shù),別的參數(shù)列表為:[arg1,arg1] #主要參數(shù)數(shù)量:3
需注意,在腳本制作中以「sys.argv」獲得的參數(shù)列表中,第一位主要參數(shù)意味著腳本制作主文件目錄
2.argparse
內嵌的argparse控制模塊能夠比較輕松地編寫出友好argv腳本制作,而且它會一鍵生成協(xié)助操作手冊,在客戶給程序流程傳到失效主要參數(shù)時可以拋出去清楚的錯誤報告
官方文檔
使用這些搭建argv包括3個階段:
搭建主要參數(shù)分析對象添加主要參數(shù)加上主要參數(shù)分析主要參數(shù)
1.搭建argv分析總體目標
importargparse ... #建立一個argv分析總體目標 parser=argparse.ArgumentParser(description='argv') ...
2.加上argv
務必注意的是,--arg1用以特定主要參數(shù)名字,-a1意味著dest總體目標變量類型(縮寫)
... #設定3個主要參數(shù) #主要參數(shù)1:arg1,浮點型,非必要調用方法 #主要參數(shù)2:arg2,字符串數(shù)組,非必要調用方法,包括初始值「xag」 #主要參數(shù)3:arg3,字符串類型,務必傳到的主要參數(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,務必主要參數(shù)',required=True) ...
3.分析出變量值
... #分析主要參數(shù),獲得每一個argv(Namespace),隨后變?yōu)樵~典 args=vars(parser.parse_args()) #獲得全部主要參數(shù) print("全部argv為:") forkeyinargs: print(f"argv名:{key},變量值:{args[key]}") ... 使用時,大家就可以用「-h/--help」指令主要參數(shù)查詢幫助文件 #查詢argv幫助文件 python32_argparse.py--help #或 python32_argparse.py-h 上邊使用的3個主要參數(shù),參數(shù)arg1、arg2非必要傳值,arg3務必傳值,此外參數(shù)arg2特定了初始值 #參數(shù)arg3務必,參數(shù)arg1和參數(shù)arg2非必要,在其中參數(shù)arg2設置權限初始值 #調用方法arg3 #python32_argparse.py--arg3123 #python32_argparse.py-a3123 xingag xingagdeMacBook-Proargs%python32_argparse.py-a3123 全部argv為: argv名:arg1,變量值:None argv名:arg2,變量值:xag argv名:arg3,變量值:123 #調用方法arg1、arg3 xingag xingagdeMacBook-Proargs%python32_argparse.py-a1111-a3123 全部argv為: argv名:arg1,變量值:111 argv名:arg2,變量值:xag argv名:arg3,變量值:123 #調用方法arg1、arg2、arg3 xingag xingagdeMacBook-Proargs%python32_argparse.py-a1111-a2222-a3123 全部argv為: argv名:arg1,變量值:111 argv名:arg2,變量值:222 argv名:arg3,變量值:123
3.getopt
getopt是Python中的內嵌標準模塊,需要結合sys.argv控制模塊,立即分析腳本運行時主要參數(shù)
應用文件格式:getopt(args,shortopts,longopts=[])
其中
args
參數(shù)列表,可以通過sys.argv獲取,可以參考上面
shortopts短參數(shù)組成的字符串
定義短參數(shù),如果參數(shù)有值,需要在短參數(shù)后追加一個「:」符號
傳參使用方式:-n 23
longopts長參數(shù)列表
定義長參數(shù)列表時,如果某個參數(shù)有值,需要在短參數(shù)后追加一個「=」符號
傳參使用方式:–port 8080
這里以傳入數(shù)據庫連接參數(shù)為例(參數(shù)包含ip、用戶名、密碼、數(shù)據庫名稱)進行講解
from getopt import getopt import sys #獲取參數(shù) #sys.argv[1:]:獲取除腳本文件名外的所有命令行參數(shù) #opts:存有所有選項及其輸入值的元組列表 #args:去除有用的輸入以后剩余的部分 opts,args=getopt(sys.argv[1:],'i:u:p:d:',['ip=','user=','pwd=','db=']) #獲取參數(shù)值 #短參數(shù) #python3 4_getopt.py-i 127.0.0.1-u root-p 123456-d mysqldb #長參數(shù) #python3 4_getopt.py--ip 127.0.0.1-u root-p 123456-d mysqldb ip_pre=[item[1]for item in opts if item[0]in('-i','--ip')] ip=ip_pre[0]if len(ip_pre)>0 else None print("參數(shù)ip:",ip) user_pre=[item[1]for item in opts if item[0]in('-u','--user')] user=user_pre[0]if len(user_pre)>0 else None print("參數(shù)user:",user) pwd_pre=[item[1]for item in opts if item[0]in('-p','--pwd')] pwd=pwd_pre[0]if len(pwd_pre)>0 else None print("參數(shù)pwd:",pwd) db_pre=[item[1]for item in opts if item[0]in('-d','--db')] db=db_pre[0]if len(db_pre)>0 else None print("參數(shù)db:",db) 在運行腳本時,我們可以利用「短參數(shù)」或「長參數(shù)」形式進行傳遞 #測試 #短參數(shù) python3 4_getopt.py-i 127.0.0.1-u root-p 123456-d mysqldb #長參數(shù) python3 4_getopt.py--ip 127.0.0.1--user root--pwd 123456--db mysqldb
4.click
click作為第三方依賴庫,它為命令行工具封裝了大量的方法,可以非常方便實現(xiàn)命令行參數(shù)
項目地址
首先,我們需要安裝依賴庫click
import click #安裝依賴 #pip3 install-U click click.command() click.option('--arg1',default='111',help='參數(shù)arg1,默認值為「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運行項目 :param arg1: :param arg2: :param arg3: :return: """ print("參數(shù)arg1值為:",arg1) print("參數(shù)arg2值為:",arg2) print("參數(shù)arg3值為:",arg3) if __name__=='__main__': start()
然后,在主運行函數(shù)上通過裝飾器配置參數(shù)即可
比如,上面就定義了3個命令行參數(shù)arg1、arg2、arg3,并設置了參數(shù)的類型及默認值
最后,在運行腳本時只需要按參數(shù)設定傳遞對應的值即可
#不包含參數(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ù)類型為整形,傳入的參數(shù)必須能轉為整形,否則會報錯 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
最終
上邊根據案例介紹了完成Pythonargv比較常見的4種方法
對于部分簡易自購并且不那樣正規(guī)情景,個人感覺可以選擇用sys.argv控制模塊迅速搭建argv;但對某些主要參數(shù)多、以用戶為中心的宣布工作環(huán)境,提議運用argparse控制模塊或click依靠來建立argv
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/129064.html
在平時的撰寫Python腳本制作的過程當中,我們通常需要根據查詢參數(shù)傳到某些自變量基本參數(shù),使新項目應用更加靈便便捷。本文列舉了搭建Python查詢參數(shù)的4種普遍方法,所需要的可以了解一下小伙伴們好,在平時的撰寫Python腳本制作的過程當中,我們通常需要根據查詢參數(shù)傳到某些自變量基本參數(shù),使新項目應用更加靈便便捷 本文我們將列舉出搭建Python查詢參數(shù)的4種普遍方法 分別是: 內嵌s...
摘要:解析器在解析的時候實際上是依賴于解析器的,它除了支持標準庫中的解析器,還支持一些第三方的解析器比如,下面我們對支持的解析器及它們的一些優(yōu)缺點做一個簡單的對比。 上一篇文章:Python3網絡爬蟲實戰(zhàn)---28、解析庫的使用:XPath下一篇文章:Python3網絡爬蟲實戰(zhàn)---30、解析庫的使用:PyQuery 前面我們介紹了正則表達式的相關用法,但是一旦正則寫的有問題,可能得到的就...
閱讀 923·2023-01-14 11:38
閱讀 895·2023-01-14 11:04
閱讀 756·2023-01-14 10:48
閱讀 2055·2023-01-14 10:34
閱讀 961·2023-01-14 10:24
閱讀 840·2023-01-14 10:18
閱讀 510·2023-01-14 10:09
閱讀 588·2023-01-14 10:02